2

我有一个包含值的表:

Key1     Key2     ColumnKey 
============================
1        idx1      here
2        idx2      there

我需要返回以逗号分隔的多列结果。

例子:

1,2   idx1,idx2,      here,there
4

3 回答 3

5
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)

SE-数据

于 2012-09-01T08:00:30.390 回答
0

试试这个:

;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
于 2012-09-01T09:01:18.927 回答
0

您是否知道 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 -- 你可以指定排序顺序

于 2012-09-02T03:51:17.887 回答