我有下表
no status amount
1 2 10000
2 3 10000
3 2 1000
4 2 -11000
我用下面的查询运行了一些。
SELECT
main.no
, main.status
, main.amount
, SUM(main.amount) OVER (
ORDER BY
main.no ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
)
from
table AS main
它返回如下。但我想通过参考status
代码来改进我的公式。
no status amount running_sum
1 2 10000 10000
2 3 10000 20000
3 2 1000 21000
4 2 -11000 10000
我想要的结果如下。
我想在另一个状态代码后,仅在status = 2
中运行sum。
no status amount running_sum
1 2 10000 10000
2 3 10000 20000
3 2 1000 11000
4 2 -11000 0
如何在配方奶粉中添加调理剂?
有什么好办法可以做到这一点呢?
谢谢
2条答案
按热度按时间wfveoks01#
您可以使用
sum(amount) over(partition by status order by no)
执行此操作Demo here
csbfibhn2#
根据您的预期输出,当
status = 2
时,您只需从运行和中减去status <> 2
的运行和,尝试以下操作:Demo