我有一张巨大的客户订单表,我想运行一个查询来按“user_id”按月列出过去 13 个月的订单。我现在所拥有的(如下)可以工作,但不是只为每个 user_id 列出一行,而是为 user_id 的每个订单列出一行。例如:一个用户一生中总共有 42 个订单,因此它在 42 行中列出了他的 user_id,并且每行只有一笔付款。通常我会把它扔到 Excel 的数据透视表中,但我已经超过了百万行限制,所以我需要它是正确的并且成功率为零。我希望读出的内容如下所示:
用户 ID |七月 12 | 8 月 12 日 |
123456 | 150.00 | 150.00 150.00 | 150.00
不是这个:
用户 ID |七月 12 | 8 月 12 日 |
123456 | 0.00 | 0.00 150.00 | 150.00
123456 | 150.00 | 150.00 0.00 | 0.00
等等 40 多行
SELECT ui.user_id,
SUM(CASE WHEN date_part('year', o.time_stamp) = 2012 AND date_part('month', o.time_stamp) = 07 THEN o.amount ELSE 0 END) jul_12,
SUM(CASE WHEN date_part('year', o.time_stamp) = 2012 AND date_part('month', o.time_stamp) = 08 THEN o.amount ELSE 0 END) aug_12,
FROM orders o JOIN users_info ui ON ui.user_id = o.user_id
WHERE user_id = '123456'
GROUP BY ui.user_id, o.time_stamp;