SQL max wert in WHERE Bedingung
Hi,
ich möchte alle Daten Sätze aus dem größten Jahr,
Wie bekomme ich den wert in die WHERE Bedingung?
ich möchte alle Daten Sätze aus dem größten Jahr,
Wie bekomme ich den wert in die WHERE Bedingung?
SELECT
we.NAME,
un.BILANZSUMME,
un.JAHR
from UNTERNEHMENSDATEN
join WERTPAPIER we
on un.WKN = we.WKN
WHERE un.JAHR = select max(jahr) from UNTERNEHMENSDATEN
order by un.BILANZSUMME DESC;
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 342266
Url: https://administrator.de/contentid/342266
Ausgedruckt am: 23.11.2024 um 11:11 Uhr
7 Kommentare
Neuester Kommentar
Moin,
versuche es mal anstelle der WHERE Clause mit der HAVING-Syntax
Die greift immer dann, wenn du ein Group by implementiert hast und auf dessen Ergbnis filtern möchtest
Gruß
em-pie
versuche es mal anstelle der WHERE Clause mit der HAVING-Syntax
Die greift immer dann, wenn du ein Group by implementiert hast und auf dessen Ergbnis filtern möchtest
Gruß
em-pie
Hmm..
hatte deinen Post - zugegebener Maßen - wohl nur überflogen
vergiss den obigen Kram also!
Du brauchst noch ein Subselect auf deine gleiche Sicht, welches du JOINEN kannst/ solltest (wäre eine Variante):
Im Subselect müsstest du zunächst ein GROUP BY mit max(Jahr) erstellen. Diese Sicht JOINST du dann mit deiner obigen Tabelle und verwendest wieder die WHERE CLAUSE
Zu deiner Fehlermeldung:
Dann fehlt dir der Operator im Having:
Deine Jahreszahl wird mit nichts verglichen...
Sagt dir aber auch der Fehlercode, mit dem du von dem Hersteller "begrüßt" wurdest.
http://www.dba-oracle.com/t_ora_00920_invalid_relational_operator.htm
Weiterer Tipp:
Schreibe IMMER zu Beginn, um welche DB es sich handelt....
hatte deinen Post - zugegebener Maßen - wohl nur überflogen
vergiss den obigen Kram also!
Du brauchst noch ein Subselect auf deine gleiche Sicht, welches du JOINEN kannst/ solltest (wäre eine Variante):
Im Subselect müsstest du zunächst ein GROUP BY mit max(Jahr) erstellen. Diese Sicht JOINST du dann mit deiner obigen Tabelle und verwendest wieder die WHERE CLAUSE
Zu deiner Fehlermeldung:
Dann fehlt dir der Operator im Having:
Deine Jahreszahl wird mit nichts verglichen...
Sagt dir aber auch der Fehlercode, mit dem du von dem Hersteller "begrüßt" wurdest.
http://www.dba-oracle.com/t_ora_00920_invalid_relational_operator.htm
Weiterer Tipp:
Schreibe IMMER zu Beginn, um welche DB es sich handelt....
Moin StarMann,
dein Statement ist fast ok, aber das Subselect muss in Klammern gesetzt werden.
Und der Alias "un" muss auch bei Unternehmensdaten angegeben werden.
Vorausgesetzt, du hast die Aufgabe richtig interpretiert... nicht dass jeweils das maximal vorhandene jahr je Wertpapier gefordert war.
So jedenfalls werden nur die Wertpapiere angezeigt, die im max(jahr) aller Wertpapiere in der Tabelle vorhanden waren.
Grüße
Biber
dein Statement ist fast ok, aber das Subselect muss in Klammern gesetzt werden.
Und der Alias "un" muss auch bei Unternehmensdaten angegeben werden.
SELECT
we.NAME,
un.BILANZSUMME,
un.JAHR
from UNTERNEHMENSDATEN un
join WERTPAPIER we
on un.WKN = we.WKN
WHERE un.JAHR = (select max(jahr) from UNTERNEHMENSDATEN)
order by un.BILANZSUMME DESC;
Vorausgesetzt, du hast die Aufgabe richtig interpretiert... nicht dass jeweils das maximal vorhandene jahr je Wertpapier gefordert war.
So jedenfalls werden nur die Wertpapiere angezeigt, die im max(jahr) aller Wertpapiere in der Tabelle vorhanden waren.
Grüße
Biber