Tsql一行中的所有ID和值
如何按条件分组选择一行中的所有ID和值 例如:Tsql一行中的所有ID和值,sql,sql-server,tsql,aggregate,Sql,Sql Server,Tsql,Aggregate,如何按条件分组选择一行中的所有ID和值 例如: | id | value | condition | -------------------------- | 1 | value1 | 0 | | 2 | value2 | 0 | | 3 | value3 | 1 | | 4 | value4 | 1 | 结果: | ids | values | condition | ---------------------
| 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 |
试着这样做:
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
谷歌:“SQL Server聚合字符串连接”或“SQL Server组连接”。可能重复了大约50篇其他帖子…戈登·林诺夫,谢谢。你的回答对我帮助很大。