显示所有月份的购买计数 - 包括0个购买月份

时间:2017-08-24 22:35:11

标签: sql oracle join left-join

我想加入一个完整的日历表,每个用户购买数据,以显示每个用户从2014年到2017年每个月的任何购买数量。有些用户可能在2016年之前没有购买,但我仍然想要让结果显示每个月的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
;

1 个答案:

答案 0 :(得分:0)

尝试

SUM(NVL(t.trans_counter,0))