2016-04-04 35 views
0

如何在一行中按條件選擇所有ids和值?Tsql所有ids和一行中的值

例如:

| id | value | condition | 
-------------------------- 
| 1 | value1 |  0  | 
| 2 | value2 |  0  | 
| 3 | value3 |  1  | 
| 4 | value4 |  1  | 

結果:

| ids |  values  | condition | 
------------------------- 
| 1, 2 | value1, value2 |  0  | 
| 3, 4 | value3, value4 |  1  | 
+1

Google:「SQL Server聚合字符串連接」或「SQL Server group_concat」。 –

+0

可能重複約50其他職位... –

+0

Gordon Linoff,謝謝。你的回答對我很有幫助。 – Mqat

回答

0

嘗試這樣的:

CREATE TABLE #test(id INT,value VARCHAR(100),condition INT); 
INSERT INTO #test VALUES 
(1,'value1',0) 
,(2,'value2',0) 
,(3,'value3',1) 
,(4,'value4',1); 

WITH MyDistinctConditions AS 
(
    SELECT DISTINCT condition 
    FROM #test 
) 
SELECT c.condition 
     ,(SELECT STUFF(
         (
         SELECT ', ' + CAST(t.id AS VARCHAR(10)) 
         FROM #test AS t 
         WHERE t.condition=c.condition 
         FOR XML PATH('')),1,2,'')) AS ids 
     ,(SELECT STUFF(
         (
         SELECT ', ' + t.value 
         FROM #test AS t 
         WHERE t.condition=c.condition 
         FOR XML PATH('')),1,2,'')) AS [values] 
FROM MyDistinctConditions AS c; 

DROP TABLE #test; 

結果

condition ids  values 
0   1, 2 value1, value2 
1   3, 4 value3, value4