2013-01-17 64 views
-5

我有這個表有問題,編寫SQL查詢2008

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

難道這看起來像一個真正的問題? – Haris

+0

你有什麼專欄?是「1個d,e」一列還是3列或4列? –

回答

3

據我所知,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 | 

SQL Server fiddle demo

然而, MySQL有一個內置的功能,GROUP_CONCAT()

SELECT 
    col1, col2, GROUP_CONCAT(col3 SEPARATOR ',') groups 
FROM Table1 
GROUP BY col1, col2; 

Mysql Fiddle Demo

+0

也許你的意思是'SELECT col1,MAX(col2),GROUP_CONCAT(col3 SEPARATOR',')groups'? –

+0

@JW。對不起,我錯過了,示例數據格式不正確,我沒有看到,我認爲'col3 GROUP BY col1,col2'的SELECT col1,col2,GROUP_CONCAT就足夠了。謝謝。 –

+0

格式化沒有問題,我已經通過查詢幫助解決了這個問題。謝謝你很棒。 –