我想请教一下,在oracle中有没有函数可以计算数据之差的。如:有一个表table ,ID=1时,D=0, ID=2时,D=C2/C1-1, ID=3时, D=C3/C2-1, ...ID A    B    C    D
1  90   80   70   0
2  80   24   40   -0.75
3  123  23   50   0.2本来数据库表只有ID,A,B,Cl四列,但我现在需要D列,用select语句得到计算D的值。
请问该如何实现?
Select ID, A,B,C,Case When ID=1 Then '0' Else ??? END D From table
Else后面的该如何实现?
谢谢

解决方案 »

  1.   


    with tmp as
    (
    select 1 id, 90 a, 80 b, 70 c from dual
    union all
    select 2 id, 80 a, 24 b, 40 c from dual
    union all
    select 3 id, 123 a, 23 b, 50 c from dual
    )
    select id, a, b, c, nvl(c / lag(c) over (order by id)  - 1, 0)
    from tmp        ID          A          B          C     RESULT
    ---------- ---------- ---------- ---------- ----------
             1         90         80         70          0
             2         80         24         40 -0.4285714
             3        123         23         50        .25