我正在使用postgres数据库,需要根据ID将多行合并成一行。

ID  | A  | B  | C  |
--------------------
1   | x  |    |    |
1   | x  | y  |    |
2   | x  |    | z  |
3   |    | y  |    |
3   |    |    | z  |

A、B和C是副塔。
我需要合并如下:
ID  | A  | B  | C  |
--------------------
1   | x  | y  |    |
2   | x  |    | z  |
3   |    | y  | z  |

当我在ID上执行GROUP BY时会出现问题,因为我无法为bytea列找到合适的聚合函数。

最佳答案

您始终可以使用子查询来完成此操作

WITH allID as (
    SELECT distinct ID
    FROM YourTable
)
SELECT
   ID,
  (SELECT A FROM yourTable yt where yt.ID = ai.ID ORDER BY A LIMIT 1) as A,
  (SELECT B FROM yourTable yt where yt.ID = ai.ID ORDER BY B LIMIT 1) as B,
  (SELECT C FROM yourTable yt where yt.ID = ai.ID ORDER BY C LIMIT 1) as C
FROM allID as ai

关于database - 根据ID合并多个bytea行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48214765/

10-10 09:24
查看更多