【发布时间】:2015-02-09 22:15:01
【问题描述】:
如何将多行合并为一行?
例子:
1 infill 20
2 test2 30
3 test3 40
我想这样组合一行:
infill 20, test2 30, test4 40.
【问题讨论】:
-
这在很大程度上取决于您使用的 DBMS。
如何将多行合并为一行?
例子:
1 infill 20
2 test2 30
3 test3 40
我想这样组合一行:
infill 20, test2 30, test4 40.
【问题讨论】:
您可以使用 JOIN ;假设您的表名为 T,您可以执行 SELECT t1., t2., t3.* from T as T1, T as T2, T as T3);但很可能这不是你想要的
【讨论】:
您可以使用名为 lead
的 Windows 函数之一use TSQL2012
if object_id('pract1') is not null
drop table pract1
go
create table pract1 (
id int identity(1,1) primary key,
name varchar(20) ,
number int
)
insert into pract1(name,number)
values
('infill',20),
('test2',30),
('test4',40)
Select concat(name,' ',number) as currentrow,
concat( lead(name,1) over (order by id), ' ', lead(number,1) over (order by id)) as currentplusonerow,
concat( lead(name,2) over (order by id), ' ', lead(number,2) over (order by id)) as [current+2]
from pract1
currentrow currentplusonerow current+2
infill 20 test2 30 test4 40
test2 30 test4 40
test4 40
编辑:我刚刚注意到您提供了额外的评论,即您希望将所有内容都放在一个列中。然后,以下代码将为您完成:
Select concat(name,' ',number) +', '+
concat( lead(name,1) over (order by id), ' ', lead(number,1) over (order by id)) +', '+
concat( lead(name,2) over (order by id), ' ', lead(number,2) over (order by id)) as [desiredResult]
from pract1
有一些空格是因为,第 2 行和第 3 行没有当前行+2。
【讨论】: