0
我有一個巨大的客戶訂單表,我想運行一個查詢來按'user_id'在過去13個月中按月列出訂單。我現在擁有的(下面)工作,但不是每user_id只列出一行,它爲user_id每個訂單列出一行。例如:一位用戶在我們的生活中總共有42份訂單,所以它列出了42行中的user_id,並且每行只有一筆付款。通常我會把它放在Excel的數據透視表中,但是我超過了100萬行的限制,所以我需要它是正確的,並且沒有成功。我想讀出來看起來像這樣:Sum(Case when)導致選擇的多行
user_id | jul_12 | aug_12 |
123456 | 150.00 | 150.00 |
不是這樣的:
user_id | jul_12 | aug_12 |
123456 | 0.00 | 150.00 |
123456 | 150.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;
如果我想多年的跨越?所以,如果這兩個而不是7月7日和8月8日,2012年12月12日和2013年1月1日。我的目標是長時間運行它以查看訂單趨勢。謝謝! – greenpowerade
您仍然可以使用您正在使用的'CASE' - 將年份過濾器移至WHERE以縮短查詢並加快速度。 –
Duh - 我猜這對我來說很糟糕。謝謝!是否有不同的方法來處理多列?或者如果我想抽24個月,我會有24條線,每個月有一條線? – greenpowerade