sql - OVER 和多列分区而不重置总数
问题描述
我不想使用 SQL Server 中的 OVER 子句重置运行总计。我已经尝试了几件事并非常努力地寻找答案,但找不到任何东西。我的查询以及结果如下。
SELECT
coaID,
fiscalID,
gl.amount,
SUM(gl.amount) OVER (PARTITION BY coaID, fiscalID ORDER BY gl.id) runningTotal
FROM
gl
INNER JOIN dbo.coa ON dbo.gl.coaId = coa.ID
WHERE
gl.coaID IN (
SELECT DISTINCT coa
FROM glCategoryGLAccountLink
WHERE glCategoryGLAccountLink.categoryId = 10001
)
AND gl.companyID=1
ORDER BY coaID, fiscalID
它主要是有效的,但会在会计 ID 更改时重置运行总计。我的目标是允许运行总计继续,而不会为每个 coaID 重置。
解决方案
我的目标是允许运行总计继续,而不会为每个
coaID
.
从分区中删除fiscalID
,即更改:
SUM(gl.amount) OVER (PARTITION BY coaID, fiscalID ORDER BY gl.id) runningTotal
至:
SUM(gl.amount) OVER (PARTITION BY coaID ORDER BY gl.id) runningTotal