SQL带条件分区SUM求和:如何按CODE字段重置累加值?
你只需要在窗口函数的OVER子句中增加PARTITION BY CODE参数即可,该参数会指定求和运算按CODE字段分组计算,不同分组的累加值完全独立,自动实现切换CODE时重置累加结果的需求。
调整后的查询语句如下:
SELECT ID, CODE, VALUE, SUM(VALUE) OVER (PARTITION BY CODE ORDER BY ID) AS RESULT FROM @TESTTABLE
运行后得到的结果符合预期:
| ID | CODE | VALUE | RESULT |
|---|---|---|---|
| 1 | C1 | 3 | 3 |
| 2 | C1 | 4 | 7 |
| 3 | C1 | 2 | 9 |
| 4 | C2 | 4 | 4 |
| 5 | C2 | 5 | 9 |
| 6 | C2 | 7 | 16 |
| 7 | C3 | 1 | 1 |
| 8 | C4 | 3 | 3 |
| 9 | C4 | 8 | 11 |
补充说明:PARTITION BY支持动态字段值,不管后续新增多少种不同的CODE取值,都会自动按实际出现的CODE值做分区计算,不需要额外修改语句适配。
内容的提问来源于stack exchange,提问作者Raju Donthula
相关产品推荐
相关产品推荐

