Analytické funkce LAG() a LEAD() umožňují přistupovat k předchozím (LAG) a dalším (LEAD) řádkům v selectu.
<> Je to užitečné, pokud máte například tabulku transakcí a chcete najít jenom ty transakce, které nejsou následovány jejich undo transakcí. >
Select pak může vypadat takto:
SELECT * FROM ( SELECT *, transactionCode LEAD(transactionCode,1) over (order by lotId, eventId) nextTransactionCode FROM m_event WHERE transactionCode IN ('TRANSAKCE','UNDO-TRANSACKCE) ORDER BY lotid, eventid ) WHERE transactionCode='TRANSAKCE' AND nextTransaction <> 'UNDO-TRANSAKCE'
Pěkný příklad najdete např. na http://www.adp-gmbh.ch/ora/sql/analytical/lag.html