日期:2014-05-17  浏览次数:20733 次

求一个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