【问题标题】:SQL Cumulative Total for Tax year July to June纳税年度 7 月至 6 月 SQL 累计总计
【发布时间】:2016-11-04 05:52:06
【问题描述】:

试图在最右边的列中获取累积总数,该列将重置为每年 7 月重新开始。纳税年度为 7 月至 6 月。此代码重置日历年。:

Select T.MonthlyTotal
      ,T.SalesMonth
      ,T.[Year]
      ,SUM(T.MonthlyTotal) OVER (ORDER BY T.[Year]) AS CumulativeTotal 
        From (SELECT 
        SUM (SubTotal) AS MonthlyTotal
        ,MONTH(CreateDate) AS SalesMonth
        ,Year(CreateDate) AS [Year]
        FROM OrderFormHeader
        Group by Month(CreateDate),Year(CreateDate)) AS T

  Order by T.[Year],T.SalesMonth

样本数据:

MonthlyTotal    SalesMonth  Year    CumulativeTotal
34370.56               7    2009    135682.15
61915.29               8    2009    135682.15
15027.21               9    2009    135682.15
9537.80               10    2009    135682.15
6748.38               11    2009    135682.15
8082.91               12    2009    135682.15
9047.77                1    2010    446574.06
11152.21               2    2010    446574.06
11672.16               3    2010    446574.06
13451.61               4    2010    446574.06
10777.37               5    2010    446574.06
20135.99               6    2010    446574.06
55169.70               7    2010    446574.06
93018.89               8    2010    446574.06
50195.15               9    2010    446574.06
11842.17               10   2010    446574.06

【问题讨论】:

  • 将 salesmonth 添加到您的 SUM() OVER() 中? SUM(T.MonthlyTotal) OVER (ORDER BY T.[Year], T.SalesMonth)

标签: sql sql-server sql-server-2012 cumulative-sum


【解决方案1】:

您需要更改数据的分区方案:

select SUM(SubTotal) AS MonthlyTotal, MONTH(CreateDate) AS SalesMonth,
       Year(CreateDate) AS [Year],
       SUM(SUM(SubTotal)) OVER (PARTITION BY MIN(Year(DATEADD(month, 6, CreateDate)))
                                ORDER BY MIN(MONTH(DATEADD(month, 6, CreateDate)))
                               ) as FY_YTD
from OrderFormHeader
Group by Month(CreateDate), Year(CreateDate)
Order by [Year], SalesMonth;

您可以使用在日期上加上六个月的技巧来获得“纳税”月份。然后,您可以使用此信息来提取累积和的年份和月份。

请注意,您不需要子查询。您可以将聚合函数与窗口函数混合使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 2012-04-18
    • 2022-10-13
    • 1970-01-01
    相关资源
    最近更新 更多