这是针对过去十二个月的月度报告,例如:于2018年1月生产,以查看2016年12月至2017年12月。
我需要生成一个案例/何时根据条件格式化日期 - 如果{prod_date}是数据集中的最后一个月,则格式为周末日期(12/2 2017/9/12/9/17) ,12 / 16/2017,等等 - yyyyddmm)。但是,如果日期早于上个月,则格式为'yyyymm'。
最终结果组应为:
20170212
20170912
20171612
20172312
20173012
201711
201710
201709
...
201612
答案 0 :(得分:0)
这就是我理解您的要求的方式:
使用CASE
表达式检查月份。截断到ISO周以获得一周的星期一。到星期六再加五天。按计算日期字符串分组并聚合您想要的任何值。 E.g:
select
grp,
max(value1) as max_value1,
sum(value2) as sum_value2
from
(
select
case when to_char(dt, 'yyyymm') = (select to_char(max(dt), 'yyyymm') from mytable)
then to_char(trunc(dt, 'iw') + 5, 'yyyyddmm')
else to_char(dt, 'yyyymm')
end as grp,
value1,
value2
from mytable
)
group by grp
order by grp desc;