Hilfe bei SQL: MAX-Funktion?
Habe ein Problem bei einer SQL-Abfrage:
Ich möchte 4 Spalten anzeigen lassen:
Straße, Datum (Format JJJJMMTT), Betrag, Ziel
Mit einer Wenn-Funktion (Ziel soll 2 sein und Datum nur vom Jahr 2022).
Abfrage funktioniert auch grundsätzlich (es wird etwas angezeigt), nur soll es nur das aktuellste Datum anzeigen.
Programm: SQL Server Management Studio
z.B. 30.06.2022: Betrag: 1.000 €, 31.07.2022: 2.000 €
Es soll nur die Zeile vom 31.07.2022 angezeigt werden.
Hat jemand eine Idee, wie ich die Abfrage umbauen muss, damit die Abfrage funktioniert?
Vielen Dank im Voraus!
LG SQL-Anfänger
Abfrage:
Select Objekt, Max([Datum]) as [letzte Kalk],Betrag, Ziel
from Tabelle
where Datum > 20211231 and Ziel = 2
GROUP BY Objekt, Betrag, Ziel
HAVING MAX ([Datum]) > 20211231
ORDER BY Objekt
1 Antwort
Ich denke, dass es zielführend sein könnte, eine Subquery zu verwenden, die das aktuellste Datum ermittelt. Mit diesem Ergebnis können dann die relevanten Werte aus der Tabelle herausgesucht werden.
Das stelle ich mir so vor:
SELECT Objekt, Datum, Betrag, Ziel
FROM Tabelle
WHERE Datum = (SELECT MAX(Datum)
FROM Tabelle
WHERE Ziel = 2 AND Datum > 20211231)
ORDER BY Objekt
Interessant ist, dass hier keine Gruppierung benötigt wird.
Danke für die HIlfe.
Das funktioniert leider nicht, da dann nur alle Objekte mit maximalem Datum (z.B. 01.12.2022) kommen. Alle Objekte, die aber keine Kalkulation zum 01.12.2022 haben, kommen dann nicht. Auch kommen alle Ziele (nicht nur 2).