【发布时间】:2021-04-26 09:04:10
【问题描述】:
我正在尝试计算每个季度的 YTD 平均值。例如:
- Q1 应该显示 Q1 数据的平均值
- Q2 应该显示 Q1 和 Q2 数据的平均值
- Q3 应该显示 Q1、Q2 和 Q3 的平均值
- 第四季度应显示所有季度的平均值。
它还需要处理多年。因此,如果我的数据看起来像这样,我希望添加标记为 YTD_AVG 的最后一列
<--- I already have these ----> Need this field
Date | YEAR_QTR | VALUE | YTD_AVG
1/1/2019 2019Q1 10 11
1/6/2019 2019Q1 5 11
2/20/2019 2019Q1 18 11
4/10/2019 2019Q2 7 10 <-- average of Q1 and Q2
6/10/2019 2019Q2 10 10
8/11/2019 2019Q3 25 15 <-- average of Q1, Q2 and Q3
9/1/2019 2019Q3 20 15
9/20/2019 2019Q3 25 15
等等。
然后,当年份转换到 2020 年时,它需要能够知道在 2020 年第一季度重新开始。
我试图按照以下方式做一些事情:
SELECT a.*
, YTD_QTR = AVG(VALUE) OVER (PARTITION BY [YEAR],YEAR_QTR)
FROM(
SELECT [DATE]
, YEAR_QTR
, datepart(year, COB_DATE) as [YEAR]
, VALUE
FROM #TABLE ) a
任何指导将不胜感激!
【问题讨论】:
-
请向我们展示您的尝试。
-
为什么要标记 3 个不同版本的 SQL Server?
-
嗨@DaleK - 更新了我无法为每个 ytd 季度工作的查询尝试。我标记了不同的版本,因为我认为即使是较旧的方法在 2012 年仍然有效,我没有大量数据,所以它不需要是最新、最好和最优化的。谢谢
标签: sql sql-server tsql sql-server-2012