有時候希望以上/下一筆的某個欄位值來計算,例如想知道今天與昨天交易量的差異數時,
通常是以編寫PL/SQL來達成目的。
但是今天在網路上看到原來有lead()和lag()兩個function可以直接以SQL完成。

例如:

SQL> select * from tmp_ccc

a b
------ -----
1 0
2 10
3 30
4 40

lag() function:找出上一筆的資料
SQL> select a, lag(b) over (order by b) test from test_ccc;

a test
------ -----
1
2 0
3 10
4 30

lead() function:找出下一筆資料
SQL> select a, lead(b) over (order by b) test from test_ccc;

a test
------ -----
1 10
2 30
3 40
4
arrow
arrow
    全站熱搜

    keven 發表在 痞客邦 留言(0) 人氣()