我需要有关创建数据透视表的帮助。我已经在这里尝试了许多提供的解决方案,但我被卡住了。希望有人能帮忙。这是我的场景:
表 1 示例
ID text 2712cb957
document_key text 201808
表 2 示例
ID text 2712cb957
amount_net int 56000
classid int 4021
Table3(通过内部连接 ID 从 Table1 和 Table2)
document_key amount_net classid
201808 10 4021
201808 10 4021
201808 15 4023
201808 13 4023
201807 20 4021
201807 15 4021
… … …
预期数据透视表
document_key 4021 4023
201807 35 0
201808 20 28
最佳答案
静态 枢轴可能如下所示:
Postgres 9.4+
Postgres 9.4 添加了FILTER
函数:
SELECT
document_key,
COALESCE(SUM(amount_net) FILTER (WHERE classid = 4021), 0) as "4021", -- A
COALESCE(SUM(amount_net) FILTER (WHERE classid = 4023), 0) as "4023"
FROM test
GROUP BY document_key
ORDER BY document_key
A:GROUP BY document_key
聚合所有 document_key
组。使用聚合函数 SUM
,您可以添加所有相应的 amount_net
值。 FILTER
函数用于仅对包含 classid = XYZ
的行中的这些值求和。聚合周围的 COALESCE
使 NULL
值变为 0。
如果你想要更多列,你必须复制这行代码。
Postgres 9.3 及更低版本
SELECT
document_key,
SUM(CASE WHEN classid = 4021 THEN amount_net ELSE 0 END) as "4021",
SUM(CASE WHEN classid = 4023 THEN amount_net ELSE 0 END) as "4023"
FROM test
GROUP BY document_key
ORDER BY document_key
关于postgresql - 像 excel 一样创建 Postgres Pivot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52389155/