【发布时间】:2020-12-30 17:30:24
【问题描述】:
我正在使用功能相对有限的 Postgres 实例 - 例如,crosstab() 函数不可用。我的目标是旋转一个表格,以便ym 中的日期按日期升序排列为列,例如:
输入:
group_code ym total
foo 2020-11-01 17
foo 2020-12-01 19
bar 2020-09-01 21
baz 2020-10-01 23
输出:
group_code 2020-09-01 2020-10-01 2020-11-01 2020-12-01
foo NULL NULL 17 19
bar 21 NULL NULL NULL
baz NULL 23 NULL NULL
然而,这里的关键是唯一日期的数量是事先不知道的,并且没有特定日期值的组代码在结果表中应该为 NULL。在 postgres 中是否有一个优雅的解决方法来创建这样一个输出表,而无需使用 CASE WHEN 语句和 FULL OUTER JOINs 预先对所有日期进行硬编码 - 换句话说 - 动态?任何建议将不胜感激
【问题讨论】:
-
如果你想要动态列,那么你需要动态 SQL——这比纯 SQL 更复杂。
-
这能回答你的问题吗? PostgreSQL 9.3: Dynamic pivot table
标签: sql postgresql pivot