Hallo Zusammen,
ich bin neu in eurem Forum und auch Newbie was SQL angeht. Ich bin gerade dabei mich sukzessive in Oracle SQL einzuarbeiten. Da mein Arbeitgeber dies im Einsatz hat und es in naher Zukunft von mir gewünscht/ erwartet wird das ich da fit werde. Hauptaufgaben werden für mich das Schreiben von Abfragen für Berichte sein.
Nun zu meiner eigentlichen Übungsaufgabe, die ich Aufgrund fehlender Logik/ Ansatz nicht lösen kann.
Die Abfrage soll alle Fahrzeuge ausgeben, welche ein DTF1TERMIN größer dem 01.01.2013 hat. Einem Fahrzeug sind mehrere Zählpunkte innerhalb der Zählpunkthistorie zugeordnet.Es soll aber nur der letzte/aktuellste Zählpunkt eines Fahrzeuges zurückgegeben werden.
Das ist mein Ansatz:
SELECT
i.spnr8 AS "Prod-Nr",
i.SBAUREIHE AS "Baureihe",
i.DTF2TERMIN AS "ZP8 Datum",
zh.DTTGIN AS "letzte ZP-Datum",
zp.SZPKTNR AS "letzer ZP-Bez"
FROM BT_INFO i
LEFT JOIN zpkt_hist zh ON i.nlfdkbnr = zh.nlfdkbnr
LEFT JOIN zaehlpunkt zp ON zh.nlfdzpkt = zp.nlfdzpkt
WHERE i.dtf1termin > '30.12.2013'
order by zh.dttgin desc;
Nun bekomme ich alle Fahrzeuge mit allen Zählpunkten zurück. Wie bekomme ich immer ur den zuletzt eingetragenen und damit aktuellsten Zählpunkt eines Fahrzeuges zurück und nicht alle? Habe schon einiges mit Unterabfragen probiert komme aber nicht zum Ziel. Ist mein Ansatz gänzlich falsch? Bitte mal um Unterstützung.
sql-aufgabe.jpg
Vorab vielen Dank und Grüße
Thomas
ich bin neu in eurem Forum und auch Newbie was SQL angeht. Ich bin gerade dabei mich sukzessive in Oracle SQL einzuarbeiten. Da mein Arbeitgeber dies im Einsatz hat und es in naher Zukunft von mir gewünscht/ erwartet wird das ich da fit werde. Hauptaufgaben werden für mich das Schreiben von Abfragen für Berichte sein.
Nun zu meiner eigentlichen Übungsaufgabe, die ich Aufgrund fehlender Logik/ Ansatz nicht lösen kann.
Die Abfrage soll alle Fahrzeuge ausgeben, welche ein DTF1TERMIN größer dem 01.01.2013 hat. Einem Fahrzeug sind mehrere Zählpunkte innerhalb der Zählpunkthistorie zugeordnet.Es soll aber nur der letzte/aktuellste Zählpunkt eines Fahrzeuges zurückgegeben werden.
Das ist mein Ansatz:
SELECT
i.spnr8 AS "Prod-Nr",
i.SBAUREIHE AS "Baureihe",
i.DTF2TERMIN AS "ZP8 Datum",
zh.DTTGIN AS "letzte ZP-Datum",
zp.SZPKTNR AS "letzer ZP-Bez"
FROM BT_INFO i
LEFT JOIN zpkt_hist zh ON i.nlfdkbnr = zh.nlfdkbnr
LEFT JOIN zaehlpunkt zp ON zh.nlfdzpkt = zp.nlfdzpkt
WHERE i.dtf1termin > '30.12.2013'
order by zh.dttgin desc;
Nun bekomme ich alle Fahrzeuge mit allen Zählpunkten zurück. Wie bekomme ich immer ur den zuletzt eingetragenen und damit aktuellsten Zählpunkt eines Fahrzeuges zurück und nicht alle? Habe schon einiges mit Unterabfragen probiert komme aber nicht zum Ziel. Ist mein Ansatz gänzlich falsch? Bitte mal um Unterstützung.
sql-aufgabe.jpg
Vorab vielen Dank und Grüße
Thomas
Comment