求一个Sql语句,orcale的,急
帮我处理一个问题:
比如一个表有A,B.C.D,四个字段,A存保单号,B存批单号,C存费率值,D存费率变化值。
A B C D
01 -- 0.1 0
01 01-1 0.3 0
02 -- 0.5 0
02 02-1 0.2 0
就是要把01对应的D的值改为01批单的费率减去保单的费率0.3-0.1,02对应的D的值改为02批单的费率减去保单的费率0.2-0.5
怎样用SQL语句实现,ORCALE的
.....
------解决方案--------------------下面的写法,假设--不做处理,后一条减去前一条的值
SQL> select a.*,decode(b, '-- ',d,c-lag(c,1,0) over(partition by a order by a)) as e from test a;
A B C D E
-- ---------- ---------- ---------- ----------
01 -- .1 0 0
01 01-1 .3 0 .2
02 -- .5 0 0
02 02-1 .2 0 -.3
------解决方案--------------------UPDATE TAB S SET D=(
SELECT T.C-S.C FROM TAB T
WHERE S.A=T.A AND T.B IS NOT NULL
)
WHERE S.B IS NULL