3

私は SQL Server と TSQL を使用しています。

私がやりたいのは、別の列でグループ化を使用するときに、ある列のコンマ区切りの値です。以下のデータ例を参照してください。

col1 --- col2

1121年
1123 エーエ
1335アフグ
1121デフ
1121年

「col1」でGroup Byしてレコード数をカウントしたいのですが、データが違う場合はcol2でも連結したいです。たとえば、値「1121」を参照として使用すると、以下のデータ出力が表示されます。

数量 --- col1 --- col2

3 1121 abc、def
1 1123 エーエ
1 1335 afg

おそらくCOALESCEを使用することを考えましたが、別の列でgroup byを使用するときに実装する方法がわかりません。

どんな助けでも大歓迎です。

4

1 に答える 1

5

これは、完全でテスト済みの実用的な例です。

create table tmp (col1 varchar(100), col2 varchar(100));
insert into tmp values ('1121',    'abc');
insert into tmp values ('1123',    'aee');
insert into tmp values ('1335',    'afg');
insert into tmp values ('1121',    'def');
insert into tmp values ('1121',    'abc');

SELECT 
distinct r.col1,
       STUFF((SELECT distinct ','+ a.col2
               FROM tmp a
             WHERE r.col1 = a.col1
            FOR XML PATH(''), TYPE).value('.','VARCHAR(max)'), 1, 1, ''),
       (select COUNT(*) cnt from tmp a where r.col1 = a.col1) cnt
 FROM tmp r

結果

1121    abc,def 3
1123    aee     1
1335    afg     1

参考文献: OMG Poniesの回答をここでガイドとして使用しました。

于 2012-07-05T14:22:58.230 に答える