在SQL Server中将多行相同id的行合并为一行[关闭]

Posted

技术标签:

【中文标题】在SQL Server中将多行相同id的行合并为一行[关闭]【英文标题】:Merge multiple rows of same id into one row in SQL Server [closed] 【发布时间】:2019-12-20 14:56:07 【问题描述】:
+----+------+------+------+
| ID |AddID |   A  |  B   |
+----+------+------+------+
|  1 | 1    |  1   | 31   |
|  1 | 2    | NULL | 1    |
|  2 | 1    | 38   | 4    |
|  2 | 2    | NULL | NULL |
|  3 | 1    | NULL | NULL |
|  3 | 2    | NULL | NULL |
|  4 | 1    | 1    | NULL |
|  4 | 2    | NULL | 5    |
|  4 | 3    | NULL | 5    |
+----+------+------+------+

我想要这样的桌子:-

+----+-----+------+------+------+-----+------+------+------+----+
| ID |Add1 |Add2  |Add3  |  A1  | B1  |  A2  |  B2  |  A3  | B3 |
+----+-----+------+------+------+-----+------+------+------+----+
|  1 | 1   | 2    |NULL  |1     | 31  | NULL | 1    |NULL  |NULL|
|  2 | 1   | 2    |NULL  |38    | 4   | NULL | NULL |NULL  |NULL|
|  3 | 1   | 2    |NULL  |NULL  | NULL| NULL | NULL |NULL  |NULL|
|  4 | 1   | 2    | 3    |1     | NULL| NULL | 5    | NULL |5   |
+----+-----+------+------+-----+------+------+------+------+----+

【问题讨论】:

某种枢轴?或者带有 case 表达式的 GROUP BY 来进行条件聚合。 你能有多少个 A、B 和 Add? 太棒了!谢谢你告诉我们,祝你好运。如果您遇到困难,请不要忘记发布问题,向我们展示您的尝试,并解释为什么它们不起作用。 我有 3 个 A 和 B 的 @Djuro 以及主 ID 表 这能回答你的问题吗? Convert Rows to columns using 'Pivot' in SQL Server 【参考方案1】:

您可以使用条件聚合:

select id,
       max(case when addid = 1 then addid end) as add1,
       max(case when addid = 2 then addid end) as add2,
       max(case when addid = 3 then addid end) as add3,
       max(case when addid = 1 then a end) as a_1,
       max(case when addid = 1 then b end) as b_1,
       max(case when addid = 2 then a end) as a_2,
       max(case when addid = 2 then b end) as b_2,
       max(case when addid = 3 then a end) as a_3,
       max(case when addid = 3 then b end) as b_3
from t
group by id;

【讨论】:

你真好!

以上是关于在SQL Server中将多行相同id的行合并为一行[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Microsoft SQL Server Management Studio 中将多行合并为一行,用逗号分隔

在sql中将不同的行数据合并到一个单元格中[重复]

求助,oracle多行数据合并成一行

求助,oracle多行数据合并成一行

sql查询结果中有id相同的字段如何对查询结果进行操作将id相同的合并为一条数据

如何在 SQL Server 中对具有相同 ID 的多行求和