我有以下数据。
select 1 id, 3 amount from dual UNION ALL
select 2 id, 2 amount from dual UNION ALL
select 3 id, 1 amount from dual UNION ALL
select 4 id, 4 amount from dual UNION ALL
select 5 id, 7 amount from dual UNION ALL
select 6 id, 1 amount from dual UNION ALL
select 7 id, 2 amount from dual UNION ALL
select 8 id, 10 amount from dual UNION ALL
select 9 id, 3 amount from dual UNION ALL
select 10 id, 4 amount from dual UNION ALL
select 11 id, 2 amount from dual UNION ALL
select 12 id, 4 amount from dual UNION ALL
select 13 id, 8 amount from dual
Run Code Online (Sandbox Code Playgroud)
我需要计算一笔金额。当它达到5时必须重置。以前的总数必须在新列中显示。我只需要使用oracle sql的解决方案。
例外结果是:
有很多方法可以解决此问题。我将使用oracle Model子句提供解决方案。
with data as (
select 1 id, 3 amount from dual UNION ALL
select 2 id, 2 amount from dual UNION ALL
select 3 id, 1 amount from dual UNION ALL
select 4 id, 4 amount from dual UNION ALL
select 5 id, 7 amount from dual UNION ALL
select 6 id, 1 amount from dual UNION ALL
select 7 id, 2 amount from dual UNION ALL
select 8 id, 10 amount from dual UNION ALL
select 9 id, 3 amount from dual UNION ALL
select 10 id, 4 amount from dual UNION ALL
select 11 id, 2 amount from dual UNION ALL
select 12 id, 4 amount from dual UNION ALL
select 13 id, 8 amount from dual
)
select id,amount,case when depletion<=5 then 0 else depletion end depletions from data
model ignore nav
dimension by (id)
measures ( amount, 0 depletion )
rules
(
depletion[ANY] = case when depletion[cv()-1]>5 then 0 else depletion[cv()-1] end +amount[cv()]
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
322 次 |
| 最近记录: |