[英]Cumulative Sum When rows have the same value sql sql server
我想这样做列小计的累计总和得到累积RunningTotal列。 但我注意到,如果行具有相同的值,则累积总和不起作用。 例如,在下面的示例中,第 5 行和第 6 行具有相同的 SubTotal 值 838.9178。 因此,RunningTotal 列不会对第 5 行和第 6 行求和。
我该如何解决这个问题? 我希望得到如下结果:
请在下面找到我的查询。 提前谢谢了!
select YEAR(OrderDate) as FiscalYear,
REPLACE(CONVERT(varchar(12), OrderDate,1), ' ', '-') as OrderDate,
SubTotal,
SUM (SubTotal) OVER (partition by YEAR(OrderDate) ORDER BY OrderDate,SubTotal ) AS RunningTotal
from Sales.SalesOrderHeader
where YEAR(OrderDate)=2012 or YEAR(OrderDate)=2013
order by YEAR(OrderDate),OrderDate;
您需要一个row
窗口子句或一个稳定的排序。 尝试这个:
SUM(SubTotal) OVER (partition by YEAR(OrderDate) ORDER BY OrderDate ROWS BETWEEN UNBOUNDED PRECEDING AND CURENT ROW) AS RunningTotal
或者,如果您在行上有一个唯一的 ID:
SUM(SubTotal) OVER (partition by YEAR(OrderDate) ORDER BY OrderDate, UniqueId) AS RunningTotal
问题是默认窗口子句使用RANGE BETWEEN
,这不是您想要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.