“如何编写Microsoft Excel代码”;“向上移动单元格”;SQL中的功能
下面是一个简单的表格:“如何编写Microsoft Excel代码”;“向上移动单元格”;SQL中的功能,sql,tsql,excel,cell,Sql,Tsql,Excel,Cell,下面是一个简单的表格: Column Headings: || Agent's Name || Time Logged In || Center || Row 1: Andrew || 12:30 PM || Home Base Row 2: Jeff || 7:00 AM || Virtual Base Row 3: Ryan || 6:30 PM || Test Base Column Headings: || Agent's Name || Time Logged In |
Column Headings: || Agent's Name || Time Logged In || Center ||
Row 1: Andrew || 12:30 PM || Home Base
Row 2: Jeff || 7:00 AM || Virtual Base
Row 3: Ryan || 6:30 PM || Test Base
Column Headings: || Agent's Name || Time Logged In || Center ||
Row 1: Andrew || 12:30 PM || Virtual Base
Row 2: Jeff || 7:00 AM || Test Base
Row 3: Ryan || 6:30 PM ||
现在假设删除了一个单元格,因此该表现在如下所示:
Column Headings: || Agent's Name || Time Logged In || Center ||
Row 1: Andrew || 12:30 PM ||
Row 2: Jeff || 7:00 AM || Virtual Base
Row 3: Ryan || 6:30 PM || Test Base
请注意,缺少“Home Base”。现在在excel中,您可以删除单元格并移动其余单元格,使成品如下所示:
Column Headings: || Agent's Name || Time Logged In || Center ||
Row 1: Andrew || 12:30 PM || Home Base
Row 2: Jeff || 7:00 AM || Virtual Base
Row 3: Ryan || 6:30 PM || Test Base
Column Headings: || Agent's Name || Time Logged In || Center ||
Row 1: Andrew || 12:30 PM || Virtual Base
Row 2: Jeff || 7:00 AM || Test Base
Row 3: Ryan || 6:30 PM ||
你可以看到,最后一行我们只剩下一个空白单元格
如何在SQL中编写向上移动单元格的过程
我已经在这个问题上挣扎了好几个星期了!谢谢大家! 你不能-SQL表不是Excel表-它们只是没有那种结构。不管你怎么努力,你都不能做那样的事。这完全不同 SQL Server表有行和列-当然-但它们没有隐含的顺序或任何东西。您不能将一行“向上移动”-实际上没有“向上”-这取决于您的订购
这比比较苹果和桔子更糟糕——就像比较苹果和花岗岩块一样——只是不一样——不要浪费时间试图使其相同。许多选项之一是使用
外部应用
从下一行获取中心:
declare @t table (name varchar(50), login time, center varchar(50))
insert into @t (name, login, center)
select 'Andrew', '12:30 PM', 'Home Base'
union all select 'Jeff', '7:00 AM', 'Virtual Base'
union all select 'Ryan', '6:30 PM', 'Test Base'
update t1
set t1.center = t3.center
from @t t1
outer apply (
select top 1 t2.center
from @t t2
where t2.name > t1.name
order by t2.name
) t3
select * from @t
您必须指定一个顺序(名称上的示例顺序)。如果您有两个集合,并且只想将第二个集合中的每个集合中的一个分配给第一个集合中的项目,“用完”,最简单的方法是在两个集合上都使用ROW_NUMBER(),并在ROW_NUMBER()列上从第一个集合到第二个集合进行左联接,为每行分配下一个可用项:
WITH set1 AS (
SELECT *, ROW_NUMBER() (OVER ORDER BY set1.sortorder /* choice of order by is obviously important */) AS ROWNUM
FROM set1
)
,set2 AS (
SELECT *, ROW_NUMBER() (OVER ORDER BY set2.sortorder /* choice of order by is obviously important */) AS ROWNUM
FROM set2
)
SELECT *
FROM set1
LEFT JOIN set2
ON set1.keys = set2.keys -- if there are any keys
AND set1.ROW_NUM = set2.ROW_NUM
我听说有人使用电子表格作为数据库,但使用数据库作为电子表格。。。我真的不得不质疑这个商业决策。数据库不是电子表格,它将数据项分组成行,以便进一步分组到表中。向上移动单元格根本不是db功能。它的工作方式不同于Excel和SQL,它以非常奇怪的方式给您提供数据(除非您要求它为您排序)您在该表上有PK,并且您有默认排序吗?另外,已经提到SQL不识别默认顺序,您可以随时更新您的数据,但也许这会持续很长时间,因为你的数据在增长。谢谢大家的帮助,我很感激能找到一个解决方案,也很感激能想出一些主意,让我知道我要做的事情是多么不可能。有趣的是,虽然我知道SQL表不是Excel表,但我正在尝试使用存储的数据。名为Avaya CMS的系统使用最不标准的行和列关系方法。