Group By Frage

Mr. Robot

Fleissiger Benutzer
Beiträge
88
Hallo zusammen,

ich habe eine vermutlich einfache Frage wo mir die Lösung gerade nicht einfällt:

Ich habe eine Tabelle der Form (in real mehrere Datensätze):

upload_2021-9-1_8-25-42.png

Ich möchte eigentlich immer nur den Datensatz mit MAX(DATUM_2) haben. Also im Beispiel den mit 2021-07-08. Wenn ich allerdings GROUP BY ... DATUM_2 (vorletzte Spalte) und KENNZAHL (letzte Spalte) sage, wird auch 0,44 und 0,46 gesplittet. Hier möchte halt weder MAX noch SUM sondern nur die 0,44 das zum MAX(DATUM_2) gehört.
 
Werbung:
P.S.: Du kannst Dir ruhig die Zeit nehmen, Deine Frage ordentlich zu formulieren. Cool sind z-B. die Angaben von Spaltennamen zu den Daten und Text statt Grafik.
 
Jetzt mit Spaltennamen:

upload_2021-9-1_9-16-3.png

Klar man könnte Kennzahl aus Group By rauslassen und nur MAX(DATUM_2) und dann joinen. Geht es aber nicht einfacher mit Window Function oder so?
 
Werbung:
Hab jetzt folgende Lösung aber vielleicht kann mir jemand sagen, ob sich das vielleicht etwas kompakter schreiben lässt?

WITH A AS (

SELECT
DATUM,
ZEITRAUMTYP,
EINHEIT,
WERTETYP,
BEMERKUNG,
MAX(DATUM_2) AS DATUM_2
FROM Tabelle
GROUP BY DATUM, ZEITRAUMTYP, EINHEIT, WERTETYP, BEMERKUNG

), B AS (

SELECT
DATUM,
ZEITRAUMTYP,
EINHEIT,
WERTETYP,
BEMERKUNG,
MAX(DATUM_2) AS DATUM_2,
KENNZAHL
FROM Tabelle
GROUP BY DATUM, ZEITRAUMTYP, EINHEIT, WERTETYP, BEMERKUNG, KENNZAHL

)

SELECT
A.*
,B.KENNZAHL
FROM A
LEFT JOIN B
ON A.DATUM_2 = B.DATUM_2
AND A.DATUM = B.DATUM
AND A.ZEITRAUMTYP = B.ZEITRAUMTYP
 
Zurück
Oben