使用SQL语句时如何将多行合并为一行

时间:2015-02-09 22:15:01

标签: sql return

如何将多行合并为一行?

示例:

1 infill  20
2 test2   30
3 test3   40

我想像这样组合一行:

infill 20, test2 30, test4 40

2 个答案:

答案 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。