假设有一个名为' 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)。
但假设我的桌子是:
col1, col2
---------
1 a
1 b
1 c
2 d
2 e
3 f
此处col2的varchar类型不是数字类型。
将给出以下结果的SQL查询是什么???
col1, col2
------------
1 a,b,c
2 d,e
3 f
我在col1上尝试了group by但是如何在col2 ???中连接值
问题是col2是varchar类型。
答案 0 :(得分:1)
如果是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。
答案 1 :(得分:0)
您可以在mysql中使用group_concat
函数
select
col1,
group_concat(col2) as col2
from table_name
group by col1
答案 2 :(得分:0)
这是一个很好的例子,我在编制时间表时遇到了类似的问题(工作示例:www.oldiesplus.com/schedule /)
以下是我的问题的链接:https://stackoverflow.com/a/27047139