如何将多行合并为一行?
示例:
1 infill 20
2 test2 30
3 test3 40
我想像这样组合一行:
infill 20, test2 30, test4 40
。
答案 0 :(得分:0)
你可以使用JOIN;假设你的表叫做T,你可以做SELECT t1。,t2。,t3。*从T作为T1,T作为T2,T作为T3);但这可能不是你想要的
答案 1 :(得分:0)
您可以使用名为 lead
的其中一个窗口函数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。