假设我有一个SELECT语句,返回以下数据:
select nr, name, val_1, val_2, val_3
from table
Nr. | Name | Value 1 | Value 2 | Value 3
-----+------------+---------+---------+---------
1 | Max | 123 | NULL | NULL
1 | Max | NULL | 456 | NULL
1 | Max | NULL | NULL | 789
9 | Lisa | 1 | NULL | NULL
9 | Lisa | 3 | NULL | NULL
9 | Lisa | NULL | NULL | Hello
9 | Lisa | 9 | NULL | NULL
我想将行压缩到最少的内容。
我想要以下结果:
Nr. | Name | Value 1 | Value 2 | Value 3
-----+------------+---------+---------+---------
1 | Max | 123 | 456 | 789
9 | Lisa | 1 | NULL | Hello
9 | Lisa | 3 | NULL | NULL
9 | Lisa | 9 | NULL | NULL
为了将最大值(编号1)的行压缩成一行,使用最大值的分组将会很有帮助。
select nr, name, max(val_1), max(val_2), max(val_3)
from table
group by nr, name
但是我不确定如何为Lisa(编号9)获得所需的结果。Lisa的行包含Value 3列中的一个值,在此示例中,它与具有Null值的Nr和Name匹配的第一行合并。
非常感谢您的每一个输入!