有時候希望以上/下一筆的某個欄位值來計算,例如想知道今天與昨天交易量的差異數時,
通常是以編寫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
通常是以編寫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
全站熱搜
留言列表