我有一个包含值的表:
Key1 Key2 ColumnKey
============================
1 idx1 here
2 idx2 there
我需要返回以逗号分隔的多列结果。
例子:
1,2 idx1,idx2, here,there
我有一个包含值的表:
Key1 Key2 ColumnKey
============================
1 idx1 here
2 idx2 there
我需要返回以逗号分隔的多列结果。
例子:
1,2 idx1,idx2, here,there
select stuff(T.X.query('Key1').value('.', 'varchar(max)'), 1, 1, '') as Key1,
stuff(T.X.query('Key2').value('.', 'varchar(max)'), 1, 1, '') as Key2,
stuff(T.X.query('ColumnKey').value('.', 'varchar(max)'), 1, 1, '') as ColumnKey
from
(
select ','+cast(Key1 as varchar(10)) as Key1,
','+Key2 as Key2,
','+ColumnKey as ColumnKey
from YourTable
order by Key1
for xml path(''), type
) T(X)
试试这个:
;WITH CTE as(
select *,1 rn from test101)
select (STUFF((select ','+cast(Key1 as varchar(10)) from CTE where CTE.rn=m.rn for xml path('')),1,1,'')) key1,
(STUFF((select ','+Key2 from CTE where CTE.rn=m.rn for xml path('')),1,1,'')) key2,
(STUFF((select ','+ColumnKey from CTE where CTE.rn=m.rn for xml path('')),1,1,'')) ColumnKey
from CTE m
group by rn
您是否知道 CodePlex 具有用户定义的聚合GROUP_CONCAT的开源 CLR 实现。安装就像在您的服务器上运行 SQL 脚本一样简单。
http://groupconcat.codeplex.com/
它有 4 个 group_concat 实现
GROUP_CONCAT --默认分隔符是 ,(逗号)
GROUP_CONCAT_D -- 你可以指定分隔符
GROUP_CONCAT_DS - 您可以指定分隔符,排序顺序(1 为 asc 顺序,2 为 desc 顺序)
GROUP_CONCAT_S -- 你可以指定排序顺序