Running total over date range - fill in the missing dates

前端 未结 4 1045
被撕碎了的回忆
被撕碎了的回忆 2021-01-15 03:05

I have the following table.

DATE  | AMT
10/10 | 300
12/10 | 300
01/11 | 200
03/11 | 100

How do I get the monthly total? A result like -

4条回答
  •  傲寒
    傲寒 (楼主)
    2021-01-15 03:57

    the main problem is the and have the missing months displayed as well? I don't see how to do it with out an aux table containing the combination of month\year to be displayed:

    create table table1(
    date datetime,
    amt int
    )
    insert into table1 values ('10/10/2010',100)
    insert into table1 values ('12/12/2010',200)
    insert into table1 values ('01/01/2011',50)
    insert into table1 values ('03/03/2011',500)
    
    truncate table #dates
    create table #dates(
    _month int,
    _year int
    )
    insert into #dates values(10,2010)
    insert into #dates values(11,2010) --missing month
    insert into #dates values(12,2010)
    insert into #dates values(01,2011)
    insert into #dates values(02,2011)--missing month
    insert into #dates values(03,2011)
    
    
    select D._month, D._year, sum(amt)
    from #dates D left join TABLE1 T on D._month=month(T.date) and D._year=year(T.date)
    group by D._month, D._year
    

提交回复
热议问题