- 和昨天对比
- 和上个月同期对比
- 和去年同期对比【待写】
因同环比定义不同,则不命名同环比,只定义对比天数和日期。统一用自连接写法 和昨天对比
select a.* ,b.* from a left join a b on a.dt = b.dt and a.channel = b.channel and datediff(a.dt, b.dt) = 1和上个月同期对比
当月日期和T-1月同日期同比。除3月以外,其他月份如无上月同日期(31号),就和上月最后一天(30号)进行同比。3月同比2月时间,无法对应日期的均与2月最后一天同比。
with t as (select a.dt ,a.Yas ,a.X ,case when month (a.dt) in (01,02,04,06,08,09,11) then date_sub(a.dt,31) when day(a.dt) = 31 and month (a.dt) in (05,07,10,12) then date_sub(trunc(a.dt,'MM'),1) -- 上个月最后一天 when day(a.dt) != 31 and month (a.dt) in (05,07,10,12) then date_sub(a.dt,30) when day(a.dt) in (29,30,31) and month (a.dt) = 03 then date_sub(trunc(a.dt,'MM'),1) when month (a.dt) = 03 then date_sub(a.dt,28) end as 30_day_30 from a ) select t.* ,t.X/t_30.X - 1 as X_30 ,t.Y/t_30.Y- 1 as Y_30 ,t.dt from t -- T天 left join t t_30 -- T-30 on t.30_day_30 = t_30.dt -- 关键和去年同期对比【待写】
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)