Vinzenz Mai: Oracle 10g, Select, Order By, gib mir die drittletzte Zeile

Beitrag lesen

Hallo Andreas,

gibt es eine Möglichkeit, mit einem select (natürlich mit order by, so daß eine Ordnung gegeben ist) die drittletzte Zeile der Ergebnis-Menge auszuwählen?

SELECT id,starttime FROM tabelle WHERE name='bla' ORDER BY starttime

Bei MySQL ginge das ja mit LIMIT, aber bei Oracle?

Mein naiver Ansatz mit ROWNUM = 3 im WHERE-Teil bringt ein leeres Ergebnis (Klar, durch diese Einschränkung hat die Ergebnismenge nur noch eine Zeile, und die hat ROWNUM = 1, ist also nicht die mit ROWNUM = 3, woraufhin die endgültige Ergebnismenge leer ist ...).

Wie krieg ich das ohne das dreifach-Select-Monster hin?

ein Subselect benötigst Du. Im inneren SELECT musst Du den jeweiligen Wert von ROWNUM in eine Spalte bekommen, dann kannst Du im äußeren SELECT auf den Wert 3 abfragen, siehe diese Archivdiskussion, die kein konkretes Statement liefert, aber den Weg anspricht. Es geht, hab' ich damals selbst durchgetestet.

Freundliche Grüße

Vinzenz