按月和年分组,但包括前一天

时间:2019-02-04 12:56:38

标签: sql oracle

我有一个包含以下数据的数据库,并且我试图按月,年和上个月的最后一天对数据进行分组。并非总是T-1天。

已经按月和年对数据进行了分组,但是在此查询中陷入了如何包括上个月的最后一天的问题。确保有一种更好的方法来代替按ID分组,并获取每个月的最大日期。将不胜感激。谢谢!

  select 
    ID,
    last_day(to_date('01' || to_char(DATA_DATE,'mm') || to_char(DATA_DATE,'yyyy'),'ddmmyyyy')) as DATA_DATE,
    SUM(GS_PX_AMT)
  from xxx
  group by ID, last_day(to_date('01' || to_char(DATA_DATE,'mm') || to_char(DATA_DATE,'yyyy'),'ddmmyyyy'))

data

2 个答案:

答案 0 :(得分:2)

如果要将一个月的最后一天包括在 next 组中,请使用@receiver(post_save, sender=testModel) def post_save(sender, instance, created, **kwargs): if instance.status == 'inplay': send()

lead()

如果要包括最后一个日期重复计算,则还可以使用窗口功能:

select id,
       to_char(next_data_date, 'YYYY-MM') as yyyymm,
       sum(GS_PX_AMT)
from (select xxx.*,
             lead(data_date, 1, data_date) over (partition by id order by data_date) as next_data_date
      from xxx
     ) x
group by id, to_char(next_data_date, 'YYYY-MM');

答案 1 :(得分:0)

select 
    ID,
    last_day(add_months(data_date,-1)) as DATA_DATE,
    SUM(GS_PX_AMT)
  from xxx
  group by ID, last_day(add_months(data_date,-1))