【发布时间】:2020-04-22 07:11:29
【问题描述】:
有人知道如何在 Postgres 中创建以下交叉表吗?
例如我有下表:
Store Month Sales
A Mar-2020 100
A Feb-2020 200
B Mar-2020 400
B Feb-2020 500
A Jan-2020 400
C Apr-2020 600
我希望查询返回以下交叉表,列标题不应是硬编码值,而是反映第一个表中“月”列中的值:
Store Jan-2020 Feb-2020 Mar-2020 Apr-2020
A 400 200 100 -
B - 500 400 -
C - - - 600
这可能吗?
【问题讨论】:
-
想强调我的目标是动态地从第一个表中提取列标题而不是硬编码它们,因为数据每个月都会发生变化。这可能吗?
-
不,不可能。查询的列数、类型和名称必须为数据库在查询开始之前知道
-
谢谢。有点切题,但您知道是否可以将列别名为日期?例如选择 sum(this_month.sales) 作为 DATE_TRUNC('month', current_date)?我的示例在这里不起作用,但想看看是否有其他方法可以做到这一点。
标签: sql postgresql crosstab