SQL Server多次累计总和(2012年或更高版本)

SQL Server多次累计总和(2012年或更高版本),sql,sql-server,Sql,Sql Server,我在这里读过几篇关于累计和的帖子,但是我一直在努力解决和或其他使用连接相同数据的累计和问题,我想你要找的是: SELECT ACCTID, FYear, FQuarter, FPeriod, PAmount, SUM(PAmount) OVER (PARTITION BY ACCTID, FYear, FQuarter ORDER BY FPeriod) AS rtQuarter, SUM(PAmount) OVE

我在这里读过几篇关于累计和的帖子,但是我一直在努力解决
或其他使用连接相同数据的累计和问题,我想你要找的是:

SELECT ACCTID, FYear, FQuarter, FPeriod, PAmount,
       SUM(PAmount) OVER (PARTITION BY ACCTID, FYear, FQuarter 
                          ORDER BY FPeriod) AS rtQuarter,
       SUM(PAmount) OVER (PARTITION BY ACCTID, FYear 
                          ORDER BY FPeriod) AS rtYear
FROM mytable
OVER
子句中,决定运行总数的是
按顺序

因此,在每个
ACCTID、FYear、FQuarter
切片中计算上述查询返回的第一个运行总数,即
rtQuarter
。只要
FQuarter
值发生变化,运行总计就会重置

第二次运行总计,即,
rtYear
,根据
ACCTID,FYear
计算
PAmount
值随着
FPeriod
的增加而增加


您遗漏了
OVER
子句的一部分。为了计算累计总额,您需要通过以下方式添加订单:

SUM(amount) OVER(PARTITION BY AccountID, FYear ORDER BY FQuarter, FPeriod )

考虑对代码代码添加一些解释,只有答案不够。分区工作得很好,但是一旦我添加了顺序,它就给了我一个“订单”错误消息附近的错误语法。我使用的是SQL server 2012 11.0.5058.0版。我确信我的查询中没有问题,因为只要我删除订单,它就会工作。啊,我现在看到,尽管兼容性级别是200590@Ian但你在问题的主题中提到“2012年或更晚”。我同意,这是我的错误。。。我以为这是我自己的最新版本。所以,我向你道歉,现在我要做的是另一件事,因为我不能做我一直想做的事。
123, 2015, 1, 1, $100, $100 (cumulative quarter), $100 (cumulative year)
123, 2015, 1, 2, $100, $200 (cumulative quarter), $200 (cumulative year)
123, 2015, 1, 3, $100, $300 (cumulative quarter), $300 (cumulative year)
123, 2015, 2, 4, $100, $100 (cumulative quarter), $400 (cumulative year)
SELECT SUM(AMOUNT) Over (Partition BY FiscalQuarter Order BY FiscalQuarter)
FROM Table_name
SELECT ACCTID, FYear, FQuarter, FPeriod, PAmount,
       SUM(PAmount) OVER (PARTITION BY ACCTID, FYear, FQuarter 
                          ORDER BY FPeriod) AS rtQuarter,
       SUM(PAmount) OVER (PARTITION BY ACCTID, FYear 
                          ORDER BY FPeriod) AS rtYear
FROM mytable
SUM(amount) OVER(PARTITION BY AccountID, FYear ORDER BY FQuarter, FPeriod )