2015-04-05 50 views
0

假設實現級聯有一個名爲「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,colour(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上分組,但是如何連接col2中的值?

問題是col2是varchar類型的。

+1

請用您實際使用的數據庫標記您的問題。 。 。 MySQL或SQL Server。 – 2015-04-05 14:30:33

+0

我想要mysql和sql server的sql查詢。 – 2015-04-05 14:35:50

回答

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

+0

它工作正常,請您詳細說明查詢,因爲這對我來說很容易理解。 – 2015-04-05 17:22:33

0

可以使用group_concat功能在MySQL

select 
col1, 
group_concat(col2) as col2 
from table_name 
group by col1 
0

這裏是一個很好的例子,我遇到了類似的問題,而編碼一個時間表(工作示例:www.oldiesplus.com/schedule/)

這裏是鏈接到我的問題與答案:https://stackoverflow.com/a/27047139