sql - OVER 并分区多列而不重置总数

标签 sql sql-server t-sql sum window-functions

我不想在 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 重置。

enter image description here

最佳答案

My objective is to allow the running total to continue without being reset for each 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

关于sql - OVER 并分区多列而不重置总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57939231/

相关文章:

mysql - 如果添加 block 代码,请在其中选择

sql - 如何读取 NTEXT 值,然后在 SQL Server 2000 中使用 sp_executesql 执行它?

mysql - mysql 中的 max() 返回 9999 不超过那个?

javascript - Laravel 依赖选择

用于返回递归值的 SQL 函数

sql - 在语句中返回 2 个计数结果

SQL查询根据列名获取表名和行数”

mysql - 在一个查询中计算多列

sql-server - 为什么我们需要 SQL Server 中的辅助数据文件?

SQL 将 nvarchar(max) 从临时表存储到 sql_variant