2016-04-04 34 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