背景
我每月都有时间序列数据,我想对每个 ID 的值求和,按月分组,然后将月份名称作为列而不是行。
例子
+----+------------+-------+-------+
| id | extra_info | month | value |
+----+------------+-------+-------+
| 1 | abc | jan | 10 |
| 1 | abc | feb | 20 |
| 2 | def | jan | 10 |
| 2 | def | feb | 5 |
| 1 | abc | jan | 15 |
| 3 | ghi | mar | 15 |
期望的结果
+----+------------+-----+-----+-----+
| id | extra_info | jan | feb | mar |
+----+------------+-----+-----+-----+
| 1 | abc | 25 | 20 | 0 |
| 2 | def | 10 | 5 | 0 |
| 3 | ghi | 0 | 0 | 15 |
当前方法
我可以轻松地按月分组,对值求和。这让我:
-----------------------------------
| id | extra_info | month | value |
+----+------------+-------+-------+
| 1 | abc | jan | 25 |
| 1 | abc | feb | 20 |
| 2 | def | jan | 10 |
| 2 | def | feb | 5 |
| 3 | ghi | mar | 15 |
但我现在需要这些月份作为列名。不知道从这里去哪里。
附加信息
- 在语言方面,此查询将在 postgres 中运行。
- 上面的几个月只是例子,显然真实的数据集要大得多,涵盖了数千个 ID 的全部 12 个月
非常感谢 SQL 大师的任何想法!