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

Beitrag lesen

Hi,

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

gibt mir das wunderschön sortierte Ergebnis aus.
Allerdings alle Zeilen.

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 ...).

Mit einem dreifach geschachtelten Select scheine ich das zu bekommen, was ich will:

SELECT id, starttime FROM
  (
    SELECT id, starttime FROM
      (
        SELECT id, starttime FROM tabelle WHERE name='bla' ORDER BY starttime DESC
      )
    WHERE ROWNUM < 4 ORDER BY starttime ASC
  )
WHERE ROWNUM < 2

Aber ich finde das einerseits ziemlich umständlich mit den drei ineinandergeschachtelten selects, andererseits bin ich mir nicht sicher, ob das auch wirklich (bei Anwendung auf mehr als meine Handvoll Testdatensätze) das tut, was ich will.

Vielleicht sehe ich auch einfach den Wald vor lauter Bäumen nicht mehr.

Nochmal:
ich brauche von den Datensätzen, die eine bestimmte Bedingung (name='bla') erfüllen, den mit der dritt-jüngsten Startzeit.

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

vielen Dank im Voraus!
cu,
Andreas

--
Warum nennt sich Andreas hier MudGuard?
O o ostern ...
Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.