3

我有一个带有 OrderDate、TotalAmount 的表。我想显示月份和月份的 TotalAmount 以及要在下个月添加的上个月的总量。

例如

OrderDate    TotalAmount  
----------   -----------  
13.01.1998---     10  
15.01.1998---     11  
01.02.1998---     12  
18.02.1998---     10  
12.03.1998---     09  

输出应该是

Month     TotalSum  
------    --------  
1---           21  
2---           43  
3---           52  
4

1 回答 1

3

如果您的数据仅来自一个日历年,您可以使用

with g as
( select month(orderdate) as ordermonth,
         sum( totalamount ) as sales
    from orders
    group by month(orderdate)
)
select m.ordermonth, sum(t.sales) as totalsales
  from g as m
  join g as t   on m.ordermonth >= t.ordermonth
  group by m.ordermonth
  order by m.ordermonth

但是,如果您的数据有可能包含两年,那么您也需要其中的年份,因此请构建您的月份以包含年份。

with g as
( select format(orderdate, 'yyyy-MM') as ordermonth,
         sum( totalamount ) as sales
    from orders
    group by format(orderdate, 'yyyy-MM')
)
select m.ordermonth, sum(t.sales) as totalsales
  from g as m
  join g as t   on m.ordermonth >= t.ordermonth
  group by m.ordermonth
  order by m.ordermonth
于 2013-09-08T07:00:30.157 回答