2

I have a table with values:

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

I need to return, for more than one column result seperated by commas.

Example:

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

CodePlex には、ユーザー定義の集計GROUP_CONCATのオープンソース CLR 実装があることをご存知ですか。インストールは、サーバーで SQL スクリプトを実行するのと同じくらい簡単です。

http://groupconcat.codeplex.com/

4 つの group_concat 実装があります

  • GROUP_CONCAT -- デフォルトの区切り文字は , (カンマ)

  • GROUP_CONCAT_D -- 区切り文字を指定できます

  • GROUP_CONCAT_DS -- 区切り文字、ソート順を指定できます (1 は昇順、2 は降順)

  • GROUP_CONCAT_S -- ソート順を指定できます

于 2012-09-02T03:51:17.887 に答える
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 に答える