合并多个行,对多个列值进行分组

时间:2015-09-25 02:37:00

标签: sql

基本SQL我知道,我找到了一种解决方法,但我确信这是一种更好的方法。

我有一张表,其中account_id可以分配两种类型的实体A和B,我想在输出表中将它们分组:

表A:

+------------+--------+--------+
| account_id |   A    |   B    |
+------------+--------+--------+
| 68129726   | Mario  | null   |
| 68129726   | null   | Silvio |
+------------+--------+--------+

输出表:

+------------+--------+--------+
| account_id |   A    |   B    |
+------------+--------+--------+
| 68129726   | Mario  | Silvio |
+------------+--------+--------+

我确定已经有了答案,只是我不知道"技术"此操作的名称。

我的解决方案(更多的解决方法):

SELECT DISTINCT account_id, MAX(A), MAX(B)
FROM TABLE A
GROUP BY account_id

有没有更好,更正确的方法呢?

1 个答案:

答案 0 :(得分:1)

"更合适"方式是明确的GROUP BY

SELECT account_id, MAX(A), MAX(B)
FROM TABLE A
GROUP BY account_id;

我能想到的唯一另一种选择是加入:

SELECT a.account_id, a.a, b.b
FROM table a JOIN table b
ON a.account_id = b.account_id AND a.a IS NULL AND b.b IS NULL;

我更喜欢聚合,但在某些情况下,JOIN会更快。