WITH A as (SELECT id, a FROM XXX WHERE a is not null),
B as (SELECT id, b FROM XXX WHERE b is not null)
SELECT A.a, B.b, A.id FROM A
INNER JOIN B on A.id = B.id;
对于此数据集,简单的聚合将满足您的要求:
select min(a) a, min(b) b, id
from mytable
group by id
这利用了聚合函数忽略null
值的事实;我们可以使用max()
获得与使用min()
相同的结果。