Sql Postgres查询将具有相同列值的多行合并到一行中

Sql Postgres查询将具有相同列值的多行合并到一行中,sql,postgresql,select,group-by,Sql,Postgresql,Select,Group By,我有这张桌子: 并希望将其转换为以下内容: 请帮帮我,我被困在上面太久了。对于此数据集,使用group by对我不起作用,简单的聚合可以满足您的要求: 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;

我有这张桌子:

并希望将其转换为以下内容:


请帮帮我,我被困在上面太久了。对于此数据集,使用group by对我不起作用,简单的聚合可以满足您的要求:

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()
相同的结果欢迎使用SO。请阅读如何写一个有用的问题的技巧,并附上一个展示你已经尝试过的问题。你的问题的细节实在太少了。请使用DDL并更好地描述您试图实现的目标。我实际上是在函数中以数组形式发送这些列值。所以它是逐行迭代的。如果我们一次只传递一行,有没有办法通过查询获得所需的输出?无法使用聚合函数。是的,当ID重复时,您可以使用ON CONFLICT语句更新行,但需要对ID进行一些约束才能这样做。