Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单个字段中的多行由逗号分隔SQL Server_Sql_Sql Server_Tsql - Fatal编程技术网

单个字段中的多行由逗号分隔SQL Server

单个字段中的多行由逗号分隔SQL Server,sql,sql-server,tsql,Sql,Sql Server,Tsql,可能重复: 实现此结果的SQL Server代码是什么: SO number Line number 123 6 123 189 456 34 所需输出: SO number Line number 123 6,189 456 34 试试这个:- CREATE TABLE #Sample ([SO Number] INT, [Line Numb

可能重复:

实现此结果的SQL Server代码是什么:

SO number  Line number            
123           6
123          189
456           34
所需输出:

SO number  Line number 
 123            6,189
 456               34   
试试这个:-

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 ( character_expression , start , length ,character_expression )
起始长度为1,因为我们必须替换由XML路径创建的第一个逗号。 正在插入的空格
'
的长度为1

因此,即使有20K行,表达式仍将与1相同,2用于插入空格

请尝试以下操作:-

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]
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]
编辑:

XML PATH (''):Is used to retrieve the column values seperated by comma 
Ex:- ,6,189,34
:用于将字符串插入另一个字符串。表达式为

STUFF ( character_expression , start , length ,character_expression )
起始长度为1,因为我们必须替换由XML路径创建的第一个逗号。 正在插入的空格
'
的长度为1


因此,即使有20K行,表达式仍将保持与1相同,2用于插入空格

这个问题是如此令人难以置信的重复。谷歌搜索“SQL Server concat aggregate”必须返回无限量的结果。我想group_concat仅用于MYSQL?不是吗?@User156175:是的,
group_concat
是一个MYSQL函数。SQL Server没有直接等效项。这就是为什么另一个问题是关于在SQL Server中模拟该函数的。这个问题是如此令人难以置信的重复。谷歌搜索“SQL Server concat aggregate”必须返回无限量的结果。我想group_concat仅用于MYSQL?不是吗?@User156175:是的,
group_concat
是一个MYSQL函数。SQL Server没有直接等效项。这就是为什么另一个问题是关于在SQL Server中模拟该函数的。我认为这是一个愚蠢的疑问。但我对SQL不是很在行。我的实际数据超过20000行。如果是这样,我将如何编写1,2',。这就是给定代码的第7行应该如何修改?@user156175:更新了我的答案。!!我认为这是一个愚蠢的怀疑。但我对sql不是很在行。我的实际数据超过20000行。如果是这样,我将如何编写1,2',。这就是您给定代码的第7行应该如何修改?@user156175:更新了我的答案。!!
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]