sql - 基于多种条件的运行总计

标签 sql sql-server

我有一个包含“年”、“周”、“市场”、“产品销售”列的表格。我的运行总数应该是

我已经尝试过 SQL 脚本over(order by Year, Week, Market, Product ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)。这仅适用于市场和产品组合的第一个记录集。一旦市场和/或产品发生变化,输出仍然会考虑最后更新的数据进行计算。

Year    Week    Market  Product  Sale   RunningTotal
2017    1       USA     Shampoo  100    100
2017    2       USA     Shampoo  100    200
2017    3       USA     Shampoo  100    300
2017    1       USA     Soap     100    400
2017    2       USA     Soap     100    500
2017    3       USA     Soap     100    600
2017    1       India   Soap     200    800
2017    2       India   Soap     200    1000
2017    3       India   Soap     200    1200

我正在寻找的结果是这样的

Year    Week    Market  Product  Sale   RunningTotal
2017    1       USA     Shampoo  100    100
2017    2       USA     Shampoo  100    200
2017    3       USA     Shampoo  100    300
2017    1       USA     Soap     100    100
2017    2       USA     Soap     100    200
2017    3       USA     Soap     100    300
2017    1       India   Soap     200    200
2017    2       India   Soap     200    400
2017    3       India   Soap     200    600

最佳答案

您需要按市场和产品进行分区:

OVER (
    PARTITION BY Market, Product 
    ORDER BY year, Week 
    ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
)

关于sql - 基于多种条件的运行总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47012744/

相关文章:

SQL - 更新语句的外键约束错误

mysql - 如何按名称获取数据库?

mysql - 查询执行时间过长

php - 计算多个表中不同值的出现次数

Mysql Equal String 返回 0 行,LIKE String 返回 1 行

mysql - 按 t1.date 连接不相关的表(t2.startdate 和 t2.enddate 之间)

SQL Server 如果没有可用的 future 日期,则选择最近的过去日期

sql-server - 如何让 dbmail 处理 SQL Server 2005 队列中的项目?

ios - sqlite:rowid 工作时无法选择 id

sql-server - 使用 NHibernate 映射 XML 数据类型