我想加入一个完整的日历表,每个用户购买数据以显示每个用户从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
;
为什么你在group-by和订单在第一子查询条款;为什么在第二次聚合呢?事实上,为什么你有子查询(内联视图)呢? –
我是全新的sql并教授自己,所以我确信我有坏习惯。 –
@AlexPoole请参阅我的更新代码,它删除了子查询,但没有解决我的问题。有任何想法吗? –