sql >> Database teknologi >  >> RDS >> Oracle

Sammenlign n. række med n+1. række, og hvis den ligger inden for rækkevidde af n. række, udskriv n+1 række USNG ORACLE QUERY

Her er en løsning ved hjælp af LAG funktion eller Oracle, som giver dig adgang til den forrige række.

Og du bør kun få række 2 og 5 fra din tabel, i henhold til de krav du har, da række 6 har end_no som 224, hvilket ikke er mindre end end_no af række5, som er 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. Kan ikke starte postgresql-tjenesten på CentOS 7

  2. PostgreSQL 12:Implementering af K-Nearest Neighbor Space Partitioned Generalized Search Tree Indexes

  3. skinner COUNT SELECT DISTINCT

  4. FOREIGN KEY refererer til samme tabels kolonne. Kan ikke indsætte værdier