marabunta
Goto Top

ORACLE DB Abfrage

Hallo,

ich habe folgende Tabelle:

ID - DATE
1 - 19.06.2017
2 - 20.06.2017
6 - 21.06.2017


Jetzt brauche ich eine Abfrage, um das vorletzte Datum auszugeben.

Vorher:
select to_char(max(DATE)+1,'DD.MM.YYYY') from TestTable where DATE < sysdate-1;  

Zwischenstand:
select max(ROWNUM)-1 from TestTable ORDER BY ID;

In den SELECT kann ich nicht DATE mit ausgeben lassen, das stellt mich vor eine Hürde.

Danke!

Content-Key: 341323

Url: https://administrator.de/contentid/341323

Ausgedruckt am: 19.03.2024 um 09:03 Uhr

Mitglied: eisbein
eisbein 22.06.2017 um 11:50:44 Uhr
Goto Top
Hallo!
SELECT * FROM TestTable WHERE ROWNUM=2 ORDER BY DATE DESC

Hab es aber nicht getestet - nur schnell gedanklich zusammengebastelt

Gruß
eisbein
Mitglied: Marabunta
Marabunta 22.06.2017 um 12:02:56 Uhr
Goto Top
Fast, leider wird where vor order by ausgeführt, damit fliegen die werte raus bevor die verbliebenen 2 nach datum sortiert werden.
Mitglied: Marabunta
Marabunta 22.06.2017 um 12:08:50 Uhr
Goto Top
bzw. in meiner version habe ich <2 verwendet um dem falschen datum auf den grund zu gehen
Mitglied: Volchy
Volchy 22.06.2017 um 12:40:44 Uhr
Goto Top
Du könntest (je nach Datenmenge) in Verbindung mit ROW_NUMBER über ein Sub-Select arbeiten.

Bspw.:
select *
from (
select row_numer() over (partition by <DATUMSFELD> order by <DATUMSFELD> desc) as row
, ...
from Tabelle
[where weitere Einschränkungen]
) Sub_a
where Sub_a.row = 2
Mitglied: eisbein
eisbein 22.06.2017 aktualisiert um 12:42:44 Uhr
Goto Top
Hallo!

wie gesagt ich kann nicht testen, da ich mich im kühlen Serverraum verschanzt halte face-wink

SELECT * FROM (SELECT * FROM TestTable ORDER BY DATE DESC) WHERE ROWNUM=2;

Gruß
eisbein


Edit: @Volchy war schneller face-sad