用于计算 mtd、ytd 值的 SQL 查询
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/39243207/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-01 04:50:37 来源:igfitidea点击:
SQL query for calculating mtd, ytd values
提问by Hashir Rizwan
I have a table with columns ID
, Title
, Date
, Amount
.
我有一个列有ID
, Title
, Date
,的表Amount
。
I need to get MTD, YTD amount values against each transaction based on Title
, Date
.
我需要得到MTD,YTD量值针对基于每笔交易Title
,Date
。
Is there anyone who had done this before?
有没有人以前做过这个?
采纳答案by Charles Bretana
Select t.title, t.Date,
Sum(y.Amount) YTD,
Sum(m.Amount) MTD
From table t
join table y
on y.Title = t.Title
and datediff(year, y.Date, t.Date) = 0
and y.Date <= t.Date
join table m
on m.Title = t.Title
and datediff(month, m.Date, t.Date) = 0
and m.Date <= t.Date
Group by t.title, t.Date
回答by Squirrel
SELECT ID,
Title,
Date,
Amount,
MTD = SUM(Amount) OVER (PARTITION BY Title, DATEADD(MONTH, DATEDIFF(MONTH, 0, [Date]), 0)),
YTD = SUM(Amount) OVER (PARTITION BY Title, DATEADD(YEAR, DATEDIFF(YEAR, 0, [Date]), 0))
FROM [a_table]