我有这张桌子
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
我有这张桌子
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
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 |
但是, MySQL 有一个内置函数GROUP_CONCAT()
:
SELECT
col1, col2, GROUP_CONCAT( col3 SEPARATOR ',') groups
FROM Table1
GROUP BY col1, col2;