我是postgreSQL的新手。我的目标是运行一个查询,该查询返回为每个proposal_id列出的所有item_id,其中每个唯一的proposal_id是一个单独的行条目,每个item_id是该行条目中的一列。
表1数据如下:
proposal_id item_id
1 83054
1 81048
2 71384
2 24282
2 19847
2 18482
3 84720
4 18081
4 73018
这就是我想要的样子:
proposal_id item_id_1 item_id_2 item_id_3 item_id_4 item_id_n
1 83054 81048
2 71384 24282 19847 18482
3 84720
4 18081 73018
挑战在于我可以在1到11个或更多条目之间拥有相同的proposal_id。
这是一个简化版本,用于提出这个问题。一旦我确定了这一点,我的计划就是为这里的其他表格中的每个item_id和proposal_id加入其他数据。
任何帮助非常感谢。
谢谢!
已编辑:固定桌面美学
答案 0 :(得分:6)
首先,确定您需要的列数:
select proposal_id, array_length(array_agg(item_id), 1)
from the_table
group by 1
order by 2 desc
limit 1
接下来,使用足够数量的
执行以下查询。select proposal_id, a[1] id1, a[2] id2, a[3] id3, a[4] id4
from (
select proposal_id, array_agg(item_id) a
from the_table
group by 1
order by 1) z