一对多PGSQL选择为单行,动态行数映射到列
我有两个表中的数据一对多PGSQL选择为单行,动态行数映射到列,sql,postgresql,Sql,Postgresql,我有两个表中的数据 Order -> Order Items 第一个表具有主键id id name 1 order1 2 order2 3 order3 第二个表将表1中的order_id作为外键 name order_id item1 1 item2 2 item2 3 我现在运行的查询是 SELECT a.id, a.generated_from, b.price FROM orders AS a INNER
Order -> Order Items
第一个表具有主键id
id name
1 order1
2 order2
3 order3
第二个表将表1中的order_id作为外键
name order_id
item1 1
item2 2
item2 3
我现在运行的查询是
SELECT a.id,
a.generated_from,
b.price
FROM orders AS a
INNER JOIN order_data AS b
ON a.id = b.order_id
但它给了我
id name order_data
1 order1 item1
1 order1 item1
1 order1 item1
2 order2 item1
2 order2 item1
3 order3 item1
3 order3 item1
3 order3 item2
3 order3 item2
我希望得到的结果数据是:
id order_name order_data1 order_data2
0 order1 item1 item2
1 order2 item1 item2
2 order3 null item2
此示例数据在此联接上没有给出这样的结果。此外,如果样本数据和当前结果都存在这种关系,您希望order1如何包含item2?听起来你想做透视表?扩展为PostgreSQLsample数据提供了这样的功能。示例数据是根据我希望的结果手动创建的。我刚刚查看了crosstab函数,它似乎返回3列,但我希望作为结果集返回3列以上