多行到一个以逗号分隔的值

San*_*ngh 83 sql sql-server sql-server-group-concat

我想在SQL Server中创建一个表值函数,我想以逗号分隔值返回数据.

例如表格: tbl

ID | Value
---+-------
 1 | 100
 1 | 200
 1 | 300     
 1 | 400 
Run Code Online (Sandbox Code Playgroud)

现在,当我使用该函数执行查询时 Func1(value)

SELECT Func1(Value) 
FROM tbl 
WHERE ID = 1
Run Code Online (Sandbox Code Playgroud)

我想要的输出是: 100,200,300,400

M.A*_*Ali 200

测试数据

DECLARE @Table1 TABLE(ID INT, Value INT)
INSERT INTO @Table1 VALUES (1,100),(1,200),(1,300),(1,400)
Run Code Online (Sandbox Code Playgroud)

询问

SELECT  ID
       ,STUFF((SELECT ', ' + CAST(Value AS VARCHAR(10)) [text()]
         FROM @Table1 
         WHERE ID = t.ID
         FOR XML PATH(''), TYPE)
        .value('.','NVARCHAR(MAX)'),1,2,' ') List_Output
FROM @Table1 t
GROUP BY ID
Run Code Online (Sandbox Code Playgroud)

结果集

????????????????????????????
? ID ?     List_Output     ?
????????????????????????????
?  1 ?  100, 200, 300, 400 ?
????????????????????????????
Run Code Online (Sandbox Code Playgroud)

  • @AR你实际上要说的是:微软(非)实施这一点以及人们由此产生的变通办法是必要的.不要只责怪一个实际上并不存在的无定形的"所有SQL". (6认同)
  • @underscore_d你可以画任何你喜欢的颜色粪便,但它仍然会发臭. (6认同)
  • 我如何使用换行符而不是','来分隔值? (3认同)
  • 我认为使用"COALESCE"功能会更好. (2认同)

归档时间:

查看次数:

290800 次

最近记录:

8 年,8 月 前