【发布时间】:2019-09-30 10:53:15
【问题描述】:
我有一个包含以下值的表;
Earnings Penalties
1000 500
0 500
0 100
0 100
500 100
400 500
只要cumulative 和 (Earnings-Penalty) 值大于或等于 0,则仅应用惩罚。否则它应该为零。
我不需要使用 Cursor 或 While 循环进行任何查询。我需要一些高性能的查询。
我想要下面的结果,
AttDay Earnings Penalties IsPenaltyApplicable Reason
2019-05-01 1000 500 Yes (1000-500=500) Remaining 500
2019-05-02 0 500 Yes (500-500=0) Remaining 0
2019-05-03 0 100 Yes (0-100=-100) Remaining -100
2019-05-04 0 100 No 0
2019-05-05 500 100 Yes (500-100=400) Remaining 400
2019-05-06 400 500 Yes (400-500=-100) Remaining -100
【问题讨论】:
-
请解释一下你在总结什么? IMO 您的问题中至少缺少一列。
-
这就是你想要的吗?当(收入 - 处罚)>= 0 时选择案例,然后“是”,否则“否”从 [TableName] 结束
-
@Fleshy,是的。但我想要累积总和值。
-
好的,有排序栏吗?
-
@Fleshy,是的 AttDate 是订购列。
标签: sql sql-server performance cumulative-sum