-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

AFAIK,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 回答