是的,Oracle的LAG函數可以處理NULL值
在使用LAG函數時,如果指定了IGNORE NULLS選項,那么在計算窗口內的前一行時,將忽略NULL值。這意味著,如果當前行的前一行包含NULL值,LAG函數將返回前一行之前的非NULL值。如果沒有指定IGNORE NULLS選項,那么LAG函數將返回窗口內前一行的值,即使該值為NULL。
例如,假設我們有以下表格:
id | value |
---|---|
1 | 10 |
2 | NULL |
3 | 20 |
使用以下查詢:
SELECT id, value, LAG(value) OVER (ORDER BY id) as lag_value
FROM table;
將返回以下結果:
id | value | lag_value |
---|---|---|
1 | 10 | NULL |
2 | NULL | 10 |
3 | 20 | NULL |
如果使用IGNORE NULLS選項:
SELECT id, value, LAG(value IGNORE NULLS) OVER (ORDER BY id) as lag_value
FROM table;
將返回以下結果:
id | value | lag_value |
---|---|---|
1 | 10 | NULL |
2 | NULL | 10 |
3 | 20 | 10 |