gpt4 book ai didi

sql - 比较第 n 行和第 n+1 行,如果它位于第 n 行的范围内,则打印 n+1 行 USNG ORACLE QUERY

转载 作者:行者123 更新时间:2023-12-02 21:35:21 24 4
gpt4 key购买 nike

我有一张像这样的 table

ID     name   Start_no     End_no
1 a 2 123
2 b 3 65
3 c 191 199
4 d 201 225
5 e 220 223
6 f 221 224

我尝试过:

SELECT  *   
FROM IV_STOCK_DETAILS a
where a.STOCK_START_NO in ( select b.stock_end_no
from IV_STOCK_DETAILS B
where b.stock_start_no between a.stock_start_no
AND A.STOCK_END_NO
AND B.STOCK_END_NO BETWEEN a.stock_start_no
AND A.STOCK_END_NO
AND (a.stock_start_no - A.STOCK_END_NO) !=0
)
ORDER BY cod_stock_branch, stock_start_no;

所以我需要逐一检查所有行及其之前的行,以及其 start_noend_no 是否位于 start_no 之内前一个打印行的 >end_no。在这种情况下,答案将是第 2、5、6 行。我只需要查询。

最佳答案

这是一个使用 LAG 的解决方案函数或 Oracle,它使您可以访问上一行。

而且,根据您的要求,您应该只从表中获取第 2 行和第 5 行,因为第 6 行有 end_no为224,不小于end_no第 5 行的 223

SELECT id, name, start_no, end_no 
FROM (
SELECT id, name, start_no, end_no,
lag(start_no, 1, 0) over (order by id) prev_start_no ,
lag(end_no, 1, 0) over (order by id) prev_end_no
FROM test
)
WHERE start_no BETWEEN prev_start_no AND prev_end_no
AND end_no BETWEEN prev_start_no AND prev_end_no;

关于sql - 比较第 n 行和第 n+1 行,如果它位于第 n 行的范围内,则打印 n+1 行 USNG ORACLE QUERY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21545223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com