sql >> Databáze >  >> RDS >> Oracle

Porovnejte n-tou řadu s n+1 a pokud leží v rozsahu n-tého řádku vytiskněte n+1 řádek USNG ORACLE QUERY

Zde je řešení pomocí LAG nebo Oracle, což vám umožní přístup k předchozímu řádku.

A měli byste získat pouze řádek 2 a 5 z tabulky podle vašich požadavků, protože řádek 6 má end_no jako 224, což není menší než end_no z řádku5, což je 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. Získejte název měsíce z čísla v PostgreSQL

  2. GROUP BY v Postgresu – žádná rovnost pro datový typ JSON?

  3. Překonání omezení hromadného vkládání přes odkaz na databázi

  4. Hledejte v různých sloupcích oddělením čárky