【发布时间】:2021-04-01 21:19:01
【问题描述】:
美好的一天。我有一个包含列的表:年份、项目、计数。 假设我在 db 表中有以下行:
2007 item1 value1
2007 item2 value2
2008 item1 value3
2008 item2 value4
2009 item1 value5
2009 item2 value6
是否有可能通过 1 个查询得到这样的结果:
2007 value1 value2
2008 value3 value4
2009 value5 value6
我知道如何分组等等,问题是每年的项目数量可能不同,所以假设我们总共有 5 个项目,我需要以下输出(如果没有找到,添加 0) :
2007 value1 value2 0 0 0
2008 0 value3 0 value4 0
【问题讨论】:
-
Arun Palanisamy 不,请再次查看我的问题。问题是输出中的每一行都应该以相同的顺序包含所有值,如果不存在,则为 0。
-
为什么
0在2008的第一列中?你怎么点这个? -
请阅读我的第二个示例,跳过第一部分,仅包含 2 个项目。它没有提供信息。换句话说,我有 5 件商品待售,每件商品可能有一些年份的销售数据,也可能没有。我每年都需要一个数组,即使数据库中没有行,它们都将以相同的顺序出现。
标签: sql postgresql group-by pivot aggregate-functions