SQL求差語句:想為一個表建立一個視圖為
每條記錄与前一記錄的差値例:
A B C
1 2 3
4 1 5視圖的結果應為
A B C
1 2 3
3 -1 2這求差語句怎麽寫?
謝謝

解决方案 »

  1.   

    把下面的表名“test_plus”换成你自己的表名:
    select * from test_plus where rownum < 2
    union all
    select sub2.a1-sub1.a1,sub2.a2-sub1.a2,sub2.a3-sub1.a3 from
    (select a1, a2, a3, row_number() over (order by 1) cnt from test_plus)sub1,
    (select a1, a2, a3, row_number() over (order by 1) cnt from test_plus)sub2
    where sub1.cnt + 1= sub2.cnt
      

  2.   

    --开窗函数
    select a-nvl(lag(a)over( order by a),0) as ta,
      b-nvl(lag(b)over( order by a),0) as tb,
      c-nvl(lag(c)over( order by c),0) as tb
    from (
      select 1 as a,2 as b, 3 as c from dual
      union
      select 4, 1, 5 from dual
    ) t--执行结果
    1 1 2 3
    2 3 -1 2