答案 0 :(得分:4)
使用stuff()
with select ... for xml path ('')
method of string concatenation。
select col1, col2, col3 = stuff(
(
select ','+i.col3
from t as i
where i.col1 = t.col1
for xml path (''), type).value('.','nvarchar(max)')
,1,1,'')
from t
group by col1, col2
rextester演示:http://rextester.com/QXH88855
返回:
+------+------+-------------+
| col1 | col2 | col3 |
+------+------+-------------+
| 1 | roy | a,f,g,h |
| 2 | sam | h,k,l |
| 3 | joe | q,w,e,r,t,y |
+------+------+-------------+
答案 1 :(得分:2)
如果是SQL Server 2017或Vnext或SQL Azure,则可以使用string_agg
SELECT col1, col2, STRING_AGG(col3, ',') from yourtable
GROUP BY col1, col2
答案 2 :(得分:0)
格式化输出确实应该在接收数据的程序中完成。您可以通过选择工具栏上的“输出到文件”并配置逗号分隔的输出,从SQL Server Management Studio导出到csv。
如果您确实需要将列组合成逗号分隔的单个值:
SELECT CAST(col1 AS NVARCHAR(100)) + N',' + CAST(col2 AS NVARCHAR(100)) + N',' + CAST(col3 AS NVARCHAR(100))
FROM table