Sql 获得月度YTD

Sql 获得月度YTD,sql,sql-server,tsql,Sql,Sql Server,Tsql,我的数据如下表所示 Company period sales ------------------------- a 2018-01-01 21 a 2018-02-01 22 a 2018-03-01 23 b 2018-01-01 24 b 2018-02-01 25 b 2018-03-01 26 我想要的输出如下所示: comp year month YTD v

我的数据如下表所示

Company  period      sales
-------------------------
a        2018-01-01   21
a        2018-02-01   22
a        2018-03-01   23
b        2018-01-01   24 
b        2018-02-01   25
b        2018-03-01   26
我想要的输出如下所示:

comp  year month  YTD values                      MTD values
---------------------------------------------------------------------------
a     2018 jan   <sum of sales in jan 2018>      <sum of sales in jan 2018>
a     2018 feb   <sum of sales in jan+feb 2018>  <sum of sales in feb 2018>
这里我得到的是
mtd
的正确值,但我还想包括一个新的列
YTD
,它给出了
累计和或运行总数。我如何才能做到这一点?

您可以使用聚合和窗口功能:

select
    company,
    year(period) yr,
    month(period) mn,
    sum(sales) mtd,
    sum(sum(sales)) over(partition by company, year(period) order by month(period)) ytd
from tablea
group by 
    company,
    year(period),
    month(period)
order by 
    company,
    year(period),
    month(period)

company | yr | mn | mtd | ytd :------ | ---: | -: | --: | --: a | 2018 | 1 | 21 | 21 a | 2018 | 2 | 22 | 43 a | 2018 | 3 | 23 | 66 b | 2018 | 1 | 24 | 24 b | 2018 | 2 | 25 | 49 b | 2018 | 3 | 26 | 75 公司年平均月日年初至今 :------ | ---: | -: | --: | --: a | 2018 | 1 | 21 | 21 a | 2018 | 2 | 22 | 43 a | 2018 | 3 | 23 | 66 b | 2018 | 1 | 24 | 24 b | 2018 | 2 | 25 | 49 b | 2018 | 3 | 26 | 75
您使用的是
SQL Server
还是
SQLite
?SQL Server 2014 company | yr | mn | mtd | ytd :------ | ---: | -: | --: | --: a | 2018 | 1 | 21 | 21 a | 2018 | 2 | 22 | 43 a | 2018 | 3 | 23 | 66 b | 2018 | 1 | 24 | 24 b | 2018 | 2 | 25 | 49 b | 2018 | 3 | 26 | 75