-5

私はこのテーブルを持っています

1   a   d
1   a   e
2   b   f
2   b   g
3   c   h
3   c   i
3   c   j
3   c   k

そして、私はこの結果を望んでいます

1   a   d,e
2   b   f,g
3   c   h,I,j,k,l
4

1 に答える 1

3

私の知る限り、SQL-Serverにはそのための組み込みの方法はありませんが、を使用してFOR XMLそうすることができます:

SELECT 
  t1.col1,
  t1.col2,
  STUFF((
    SELECT ', ' + t2.col3
    FROM Table1 t2
    WHERE t2.col1 = t1.col1
    FOR XML PATH (''))
  ,1,2,'') AS Groups
FROM Table1 t1
GROUP BY t1.col1, col2;

これにより、次のことが得られます。

| COL1 | COL2 |     GROUPS |
----------------------------
|    1 |    a |       d, e |
|    2 |    b |       f, g |
|    3 |    c | h, i, j, k |

SQL Server フィドル デモ

ただし、 MySQL には組み込み関数がありますGROUP_CONCAT()

SELECT
  col1, col2, GROUP_CONCAT( col3 SEPARATOR ',') groups
FROM Table1
GROUP BY col1, col2;

Mysql フィドルのデモ

于 2013-01-17T08:40:36.897 に答える