0

重複の可能性:
MS SQL Server 2005 で group_concat MySQL 関数をシミュレートしていますか?

この結果を達成するための SQL Server コードは次のとおりです。

SO number  Line number            
123           6
123          189
456           34

必要な出力:

SO number  Line number 
 123            6,189
 456               34   
4

2 に答える 2

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 )

XML PATH によって作成された最初のコンマを置き換える必要があるため、開始の長さは 1 です。''挿入されるスペースの長さは 1 です

したがって、20K行ある場合でも、式は1,2と同じままで、スペースを挿入するために使用されます

于 2012-07-29T16:12:28.807 に答える
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]
于 2012-07-30T05:36:06.003 に答える