如何编写一个SQL查询,将输入表中的多行连接到输出表中的一行

时间:2012-05-10 03:33:42

标签: sql oracle

给出以下样本表:

C1     C2      C3
=================
A      21      S
A      22      S
A      23      S
A      24      T
B      25      S
B      26      S

如何编写SQL查询以提供以下输出:

COL1   COL2       COL3
======================
A      21,22,23      S
A      24            T
B      25,26         S

对于输入表中C1和C3相同的所有行,我希望输出表中有一行连接所有C2值,逗号分隔。

我正在使用Oracle数据库。

3 个答案:

答案 0 :(得分:0)

如果您使用的是oracle 11g

,请尝试此操作
SELECT 
     C1, 
     LISTAGG(C2, ',') as C2,
     C3
from 
     tbl 
GROUP BY 
     C1,C1

答案 1 :(得分:0)

这将是一个特定于数据库的答案,所以请你正在使用什么数据库。 Mysql很受欢迎,所以这里是Mysql5的答案:

select col1, group_concat(col2 SEPARATOR ','), col3 from tbl group by col1,col3;

答案 2 :(得分:-1)

在MySQL中,您可以使用Group_Concat。例如:

  

SELECT GROUP_CONCAT(语言)作为语言来自CountryLanguage WHERE CountryCode =' THA';