2012-08-09 22 views
5

可能重複:
SQL Server: Can I Comma Delimit Multiple Rows Into One Column?如果計數(值)> 1,將所有值成單細胞

我想所有記錄在某一個領域合併成一個單一如果記錄的計數大於1,則爲單元格(每個值來自另一列)。例如,如果我具有以下代碼

SELECT city, count(zoo name) AS 'count of zoo name' FROM mytable 

這將產生以下結果

enter image description here

原來的表看起來像這樣

enter image description here

由於兩個亞特蘭大和紐約有一個以上的動物園和東京只有一個動物園,最終結果應該看起來像

enter image description here

我該如何去做這件事?我想過使用PIVOT結構,但是它爲每個可能的值創建了新的列。我還必須將每個可能的動物園名稱的名稱寫入PIVOT。這將是一種糟糕的形式,因爲實際數據比「上面的動物園名稱」有更多可能的值。

回答

1

您可以使用XML路徑Concat的列值

;With Cte(city,concat) as 
(
    select city, (select a.Zoo+',' 
    from Sample a 
    where a.city=b.city 
    for XML PATH ('')) concat 
    from Sample b 
    group by city 
) 
Select city,left(concat, len(concat) -1) from cte 

檢查結果SQL Fiddle

+0

我會修剪這個結果,除去結束逗號。 'LEFT(concat,LEN(concat)-1)' – Kermit 2012-08-09 19:44:36

+0

這最後會帶一個''',所以你可能想在另一個select中包裝這個,並且添加'left(concat,len(concat)-1) '到concat字段 – Taryn 2012-08-09 19:44:38

+0

已更新我的答案。謝謝您指出。 – praveen 2012-08-09 19:51:05

相關問題