首页 > 解决方案 > 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 重置。

在此处输入图像描述

标签: sqlsql-servertsqlsumwindow-functions

解决方案


我的目标是允许运行总计继续,而不会为每个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

推荐阅读