sql >> Databasteknik >  >> RDS >> Oracle

Jämför n:e raden med n+1:e raden och om den ligger inom intervallet n:te raden skriv ut n+1 rad USNG ORACLE QUERY

Här är en lösning som använder LAG funktion eller Oracle, som ger dig tillgång till föregående rad.

Och du bör bara få rad 2 och 5 från din tabell, enligt de krav du har, eftersom rad 6 har end_no som 224, vilket inte är mindre än end_no av rad5 som är 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;


  1. Upprepa samma bindningsvariabel flera gånger när du använder den dynamiska SQL-strukturen OPEN...FOR i Oracle PL/SQL

  2. Hur man hittar första gratis starttider från bokningar i Postgres

  3. Rails:Att anropa .limit(5) ändrar resultatordningen

  4. PostgreSQL 9.6:Parallell Sequential Scan