假设我有这样的sql表:
id | val_1 | val_2 |
1 | 50 | 130 | -
2 | 70 | 110 | False
3 | 60 | 135 | True
4 | 40 | 70 | True
...
现在,我想检查(val_150在70 AND 110之间(OR(val_2130在70和110之间(是否为False,下一行是否为True,因为130在60和135之间,依此类推。这在窗口函数中可能吗?
您可以使用lag
函数来获取前一行:
SELECT id, val_1, val_2,
LAG(val_1) OVER (ORDER BY id ASC) BETWEEN val_1 AND val_2 OR
LAG(val_2) OVER (ORDER BY id ASC) BETWEEN val_1 AND val_2
FROM mytable