TOMÁŠ HUBÁLEK BLOG: BAVTE SE PŘIMĚŘENĚ…

Analytické funkce LAG() a LEAD() v Oracle 8.1.7 a vyšším

Written By: Tomáš Hubálek - Jul• 15•04

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

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Reply

Your email address will not be published. Required fields are marked *