在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 中将多行合并为一行,用逗号分隔