【问题标题】:Tsql all ids and values in one row [duplicate]Sql 一行中的所有 id 和值 [重复]
【发布时间】:2016-04-04 11:59:32
【问题描述】:

如何选择一行中的所有 id 和值,按条件分组?

例如:

| 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     |

【问题讨论】:

  • Google:“SQL Server 聚合字符串连接”或“SQL Server group_concat”。
  • 可能重复大约 50 篇其他帖子...
  • 戈登·林诺夫,谢谢。你的回答对我帮助很大。

标签: sql sql-server tsql aggregate


【解决方案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

【讨论】:

    猜你喜欢
    • 2016-07-22
    • 2014-09-15
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 2010-09-24
    相关资源
    最近更新 更多