一对多加入在postgres中返回单行

时间:2017-08-21 10:29:55

标签: sql postgresql pivot pivot-table crosstab

我试图浏览很多页面,但无法找到问题的结果。需要针对以下场景的解决方案,目前使用左连接需要一些增强。

例如:

Click on the link to see the example

1 个答案:

答案 0 :(得分:0)

一种方法是条件聚合:

SELECT PKID_FROM_TABLE_1,
       MAX(CASE WHEN U_DATA = 'unique0' THEN U_VALUE END) as unique0,
       MAX(CASE WHEN U_DATA = 'unique1' THEN U_VALUE END) as unique1,
       MAX(CASE WHEN U_DATA = 'unique2' THEN U_VALUE END) as unique2,
       MAX(CASE WHEN U_DATA = 'unique3' THEN U_VALUE END) as unique3,
       MAX(CASE WHEN U_DATA = 'unique4' THEN U_VALUE END) as unique4
FROM example
GROUP BY PKID_FROM_TABLE_1;

这是ANSI标准SQL,适用于大多数数据库。