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