繁体   English   中英

将postgreSQL中的多行组合成一行?

[英]Combining multiple rows in postgreSQL into one row?

我是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加入其他数据。

任何帮助非常感谢。

谢谢!

编辑:固定表美学

首先,确定您需要的列数:

select proposal_id, array_length(array_agg(item_id), 1)
    from the_table
    group by 1
    order by 2 desc
    limit 1

接下来,使用足够数量的a执行以下查询。

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

SQLFiddle

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM