假设最大400
SQL> with income as(select 20 id,55 value from dual
2union all select 21 id,100 value from dual
3union all select 22 id,150 value from dual
4union all select 23 id,110 value from dual
5union all select 24 id,140 value from dual)
6select * from income;
IDVALUE
---------- ----------
20 55
21100
22150
23110
24140
SQL> with income as(select 20 id,55 value from dual
2union all select 21 id,100 value from dual
3union all select 22 id,150 value from dual
4union all select 23 id,110 value from dual
5union all select 24 id,140 value from dual)
6select id,value,sum(value) over(order by id) sum,
7case when sum(value) over(order by id)=0
10
then value-(sum(value) over(order by id)-400)
11 else 0 end
12end col
13 from income;
IDVALUESUMCOL
---------- ---------- ---------- ----------
20 55 55 55
21100155100
22150305150
23110415 95
24140555
0
SQL>
[ 本帖最后由 kmpx 于 2008-9-24 16:57 编辑 ]
|