2013-03-14 89 views
1

SQL很新,我看過幾個我認爲是同樣的問題的答案,因爲我目前正在努力。 其中大多數引用了樞軸功能,但我無法弄清楚這是我需要甚至如何使其工作。 (我使用MS SQL Server Management Studio中2005)SQL Server 2005 - 列到行

基本上我有鑰匙的TABEL和一些植物和輸出象下面這樣:

Key | Plant 
------------- 
12 | 123 
12 | 456 
12 | 789 
13 | 456 
13 | 789 
14 | 123 
14 | 456 
14 | 789 
14 | 012 
14 | 345 
15 | 123 
15 | 456 

我試圖讓我的輸出像顯示數據:

Key | Plant 
------------------------------- 
12 | 123, 456, 789 
13 | 456, 789 
14 | 123, 456, 789, 012, 345 
15 | 123, 456 

植物的數量將大大變化,但我想在植物列作爲植物(多個)的字符串顯示的植物(S)連接到所述鍵。

回答

2

您不需要PIVOT功能。 A 樞紐會將工廠行轉換爲單獨的列。

要得到你願意,你可以使用FOR XML PATH結果:

select distinct t1.[key], 
    STUFF((SELECT distinct ', ' + t2.plant 
     from yourtable t2 
     where t1.[key] = t2.[key] 
      FOR XML PATH(''), TYPE 
      ).value('.', 'NVARCHAR(MAX)') 
     ,1,2,'') plant 
from yourtable t1; 

SQL Fiddle with Demo

+0

我可能做錯了什麼 - 因爲我得到一個錯誤('''WHERE子句中的錯誤'('。無法解析查詢文本。) - 或者我只是有點綠色仍然:)也許重要的是說,數據包含在同一個表 - 我不是小號如果這是個問題呢?那麼,我已經輸入瞭如下數據:SELECT DISTINCT ttTable。[Key], STUFF((SELECT DISTINCT','+ ttTable.Plant FROM ttTable WHERE ttTable。[key] = ttTable。[key] FOR XML PATH(''),類型 ).value('。','NVARCHAR(MAX)') ,1,2,'')工廠 FROM ttTable; 以上面的錯誤信息爲結果 – 2013-03-14 13:32:17

+0

我的壞 - 如果我關掉圖表和標準窗格 - 感謝您的幫助 - 真的很感謝:) – 2013-03-14 14:02:13

0

試試這個:

SELECT 
    t1.[Key], 
    STUFF(
      (SELECT ', ' + t2.Plant 
      FROM yourtable t2 
      WHERE t1.[Key] = t2.[Key] 
      FOR XML PATH('')), 
     1, 2, '') 
FROM yourtable t1 
GROUP BY [Key] 
+0

感謝您的幫助 - 真的很感激:) – 2013-03-14 14:02:30