【发布时间】:2017-08-24 22:35:11
【问题描述】:
我想加入一个完整的日历表,其中包含每个用户的购买数据,以显示每个用户从 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
;
【问题讨论】:
-
为什么第一个子查询中有group-by和order-by子句;为什么要在第二个聚合?事实上,为什么你有子查询(内联视图)?
-
我是 sql 新手,自学,所以我确定我有坏习惯。
-
@AlexPoole 请查看我更新的代码,它删除了子查询,但没有解决我的问题。有什么想法吗?