在这个示例表fruits中,我想获取high_low_adjstmnt〈0的前一行、当前行和下一行。
Table
id name low high high_low_adjstmnt volume
1 Apple 5 3 -2 1000
2 Orange 6 9 3 2000
3 Banana 13 17 4 3000
4 Avocado 11 19 8 4000
5 Berry 21 17 -4 5000
6 Peach 7 9 2 6000
7 Mango 9 14 5 7000
8 Grape 18 11 7 8000
9 Kiwi 14 13 -1 9000
所需输出结果
id name low high high_low_adjstmnt volume
1 Apple 5 3 -2 1000
2 Orange 6 9 3 2000
4 Avocado 11 19 8 4000
5 Berry 21 17 -4 5000
6 Peach 7 9 2 6000
8 Grape 18 11 7 8000
9 Kiwi 14 13 -1 9000
我如何在查询中得到这个结果?
2条答案
按热度按时间ovfsdjhp1#
我认为有几种方法可以实现这一点。也许,你可以使用
LAG()
和LEAD()
函数来获取上一行和下一行的值,然后使用cte
(或派生表)来过滤它们,如下所示:Demo fiddle
r3i60tvu2#
您可以使用条件
t.id = t2.id - 1 or t.id = t2.id or t.id = t2.id + 1
执行self-join
以获取上一行、当前行和下一行。结果:
Demo here