可能重复:
Simulating group_concat MySQL function in MS SQL Server 2005?
实现此结果的SQL Server代码是什么:
SO number Line number
123 6
123 189
456 34
需要输出:
SO number Line number
123 6,189
456 34
答案 0 :(得分:4)
试试这个: -
CREATE TABLE #Sample ([SO Number] INT, [Line Number] INT)
INSERT INTO #Sample ([SO Number],[Line Number]) VALUES (123,6)
INSERT INTO #Sample ([SO Number],[Line Number]) VALUES (123,189)
INSERT INTO #Sample ([SO Number],[Line Number]) VALUES (456,34)
SELECT ID,
STUFF((
SELECT ', ' + cast([Line Number] as varchar(max) )
FROM #Sample
WHERE ([SO Number] = a.[SO Number])
FOR XML PATH (''))
,1,2,'') AS b
FROM #Sample a
GROUP BY [SO Number]
编辑:
XML PATH (''):Is used to retrieve the column values seperated by comma
Ex:- ,6,189,34
STUFF:用于将字符串插入另一个字符串。表达式为
STUFF ( character_expression , start , length ,character_expression )
起始长度为1,因为我们必须替换XML PATH创建的第一个逗号。
正在插入的空间''
的长度为1
因此,即使您有20K行,表达式也将保持相同,因为1,2用于插入空格
答案 1 :(得分:0)
DECLARE @Sample Table([SO Number] INT, [Line Number] INT)
INSERT INTO @Sample ([SO Number],[Line Number]) VALUES (123,6)
INSERT INTO @Sample ([SO Number],[Line Number]) VALUES (123,189)
INSERT INTO @Sample ([SO Number],[Line Number]) VALUES (456,34)
select * from @Sample
select [SO Number],STUFF((select ','+cast([Line Number] as varchar(100)) from @Sample s1 where s1.[SO Number] =s.[SO Number] FOR XML path('')),1,1,'' ) as [Line Number] from @Sample s
group by [SO Number]