我有一张桌子(人),其中包含以下信息:
id cert_id type name
1 123 owner Paul
2 123 seller George
3 123 buyer steve
4 456 owner micheal
我还有一个表(项目),其中包括以下内容:
id cert_id item_name
1 123 staples
2 123 cheese
3 123 iguanas
4 456 pie
基本上,我想要做的是得到如下结果:
cert_id owner_name seller_name buyer_name item_name
123 Paul George steve staples, cheese, iquanas
456 micheal pie
到目前为止,我已经能够使用MAX(CASE WHEN people.type='owner' THEN people.name END) AS owner_name
,但是我无法将卖家名称附加到另一行('我不确定这是否可以通过SQL语句或者我应该做些什么之后对结果进行格式化。任何关于组合行的建议都会有所帮助,或者简单的“不可能”会让我知道这些限制是什么。
提前致谢!
答案 0 :(得分:6)
您应该能够使用以下查询来获得结果:
select p.cert_id,
max(case when p.type = 'owner' then p.name end) owner_name,
max(case when p.type = 'seller' then p.name end) seller_name,
max(case when p.type = 'buyer' then p.name end) buyer_name,
array_agg(distinct i.item_name) Items
from people p
inner join items i
on p.cert_id = i.cert_id
group by p.cert_id;
答案 1 :(得分:-1)
这可以使用INNER JOIN或LEFT-OUTER-JOIN ...
来完成