2012-08-11 73 views
1

我一直在尋找一種方法來顯示多行,一個單元格中的一列。它的內容用逗號分隔。在SQL Server中將列分組爲多行和Group_concate如MySQL

例如,在代替:

 
ProjectID Name     count 
------------------------------------- 
    2  Technical Services 31 
    1  Security Services  32 
    7  Technical Services 32 

我想我的查詢的結果是這樣的:

 
Name     Label 
--------------------------- 
Technical Services 31,2 
Technical Services 32,7 
Security Services 32,1 

我也希望我的查詢的結果看起來像這樣(就像在MySQL Group_Concate

 
Name     Label 
------------------------------- 
Security Services 32,1 
Technical Services 31,2: 32,7 
+0

PLZ格式化。它很難理解你在找什麼 – sundar 2012-08-11 07:09:23

回答

1
如果你想組由 Name(喜歡的東西在MySQL Group_Concate

SELECT Name, 
CAST(count AS VARCHAR(10)) + ',' + CAST(ProjectID AS VARCHAR(10)) 
AS Label FROM table1 

結果

 
NAME     LABEL 
---------------------------- 
Security Services  32,1 
Technical Services  32,7 
Technical Services  31,2 

See this SQLFiddle

有沒有爲它的任何方法在SQL服務器:

試試這個。這只是它背後的邏輯。
那麼試試這個:

SELECT * FROM (
    SELECT DISTINCT Name 
    FROM table1 
    ) table2 
CROSS APPLY 
    (SELECT CASE ROW_NUMBER() 
     OVER(ORDER BY ProjectId) 
     WHEN 1 THEN '' ELSE ': ' END + 
     (CAST(table3.count AS VARCHAR(10)) + ',' 
     + CAST(table3.ProjectID AS VARCHAR(10))) 
    FROM table1 table3 
    WHERE table3.Name = table2.Name 
    ORDER BY ProjectID 
    FOR XML PATH ('') 
    ) table3(Label) 

那麼結果將是正確

 
NAME     LABEL 
-------------------------------- 
Security Services  32,1 
Technical Services 31,2: 32,7 

See this SQLFiddle

+0

非常感謝兄弟,但我想查看爲 – user960439 2012-08-11 08:23:49

+0

感謝兄弟的工作.....但我想查看lyk這個名稱LABEL --------- ------------------- 安全服務32,技術服務32,7:31,2 – user960439 2012-08-11 08:24:28

+0

@ user960439再次看到我的答案 – hims056 2012-08-11 09:14:45

0
select Name, 
     cast(count as varchar(5))+','+cast(ProjectID as varchar(5)) as label 
from <table>