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