2017-08-24 81 views
0

我想加入一個完整的日曆表,每個用戶購買數據以顯示每個用戶從2014年到2017年每月的任何購買計數。有些用戶可能不會直到2016年纔會有購買,但我仍然希望結果在第一個購買日期的每個月都顯示0,以及在幾個月之間的任何0。顯示所有月份的購買次數 - 包括0個購買月份

我不能得到0個月被列入!我認爲這是因爲我在許多獨特的用戶中這樣做,但感覺下面的代碼應該可以工作。

select 
    c.fscl_yr_num 
    ,c.fscl_month_num 
    ,t.user_id 
    ,sum(nvl(t.trans_counter, 0)) 
from 
    appca.d_cal c 
left join 
    transaction_data t 
    on c.cal_dt = t.trans_dt 
    and t.trans_type = 'Purchase' 
    and c.fscl_yr_num in (2014, 2015, 2016, 2017) 
group by 
    c.fscl_yr_num 
    ,c.fscl_month_num 
    ,t.user_id 
order by 
    t.user_id 
    ,c.fscl_yr_num 
    ,c.fscl_month_num 
; 
+0

爲什麼你在group-by和訂單在第一子查詢條款;爲什麼在第二次聚合呢?事實上,爲什麼你有子查詢(內聯視圖)呢? –

+0

我是全新的sql並教授自己,所以我確信我有壞習慣。 –

+0

@AlexPoole請參閱我的更新代碼,它刪除了子查詢,但沒有解決我的問題。有任何想法嗎? –

回答

0

嘗試

SUM(NVL(t.trans_counter,0)) 
+0

不幸的是,這並沒有奏效。 –

+0

你會得到什麼結果? –

+0

因此,我希望每個用戶ID都有〜48行,每個月有1個2014-2017,然後在每個月內進行相應的購買計數,包括0個月。我只收到每個有購買計數的用戶的行數。 –