假设有一个名为“a”的表,其中包含以下数据:
col1, col2
-----------
1 1
1 2
1 3
2 2
2 3
3 4
然后达到以下结果:
col1, col2
--------------
1 6
2 5
3 4
我可以运行如下查询:
从 col1 的组中选择 col1, sum(col2)。
但假设我的 table 是:
col1, col2
---------
1 a
1 b
1 c
2 d
2 e
3 f
这里col2是varchar类型而不是numeric类型。
给出以下结果的sql查询是什么???
col1, col2
------------
1 a,b,c
2 d,e
3 f
我已经在 col1 上尝试过 group by 但如何连接 col2 中的值???
问题是col2是varchar类型。
最佳答案
如果是MySQL
,您可以使用GROUP_CONCAT
,如下所示:
SELECT
col1,
GROUP_CONCAT(col2) as col2
FROM demo
GROUP BY col1;
这是sqlfiddle .
如果是SQL Server
,您可以使用STUFF
,如下所示:
SELECT t1.col1,
stuff((SELECT ',' + CAST(t2.col2 as VARCHAR(10))
FROM demo t2 WHERE t1.col1 = t2.col1
FOR xml path('')),1,1,'') col2
FROM demo t1
GROUP BY t1.col1;
这是sqlfiddle .
关于mysql - 如何使用group by实现串联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29458336/