Group by mit MAX(Datum)

merTii

Mitglied
Guten Tach alle miteinander,

ich habe mich soweit im Forum und über google informíert, nur finde ich keine Lösung zu meinem Problem: Ich benötige ein Group by mit einem MAX(Datum). Mein Code bisher sieht wie folgt aus:

Code:
Select cases.casereference,  MAX(ce.eventduedate)
From cases, caseevent ce
Where cases.casekey = 23355492
And cases.casekey = ce.casekey(+)
And ce.eventkey(+) = 5968993
Group by cases.casereference;

So funktioniert es auch...nun möchte ich jedoch bei SELECT einen weiteren Punkt mit aufnehmen([...],ce.eventdate), dann kommt aber die Fehlermeldung:

Code:
ORA-00979: not a GROUP BY expression

Könnt ihr mir weiterhelfen? Ich muss bestimmt einen INNER JOIN machen, nur weiß ich nicht wie^^

mfg
merTii
 
Zeig mal dein fehlerhaftes SQL. ich kann mir grad nicht vorstellen wo du das eventdate anhängen willst. Im GROUP BY?

Grundsätzlich miss bei einem GROUP BY jedes Feld im SELECT entweder mit einer GroupFunction versehen werden (MAX(), SUM() etc) oder im GROUP BY aufgelistet werden. Je nach DBMS ist das zwingend oder nicht. Bei Oracle ist es zwingend
 
Code:
Select cases.casereference,  MAX(ce.eventduedate), ce.eventdate
From cases, caseevent ce
Where cases.casekey = 23355492
And cases.casekey = ce.casekey(+)
And ce.eventkey(+) = 5968993
Group by cases.casereference;

So habe ich es eingefügt...und dann kommt die Fehlermeldung.
 
Also, du musst ce.eventdate zusätzlich noch in den GROUP BY setzen. Genau das sagt ja die Fehlermeldung.
Den Grund habe ich ja bereits geschrieben
 
Das Problem ist folgendes:
Ich gebe ein cases.casekey ein (in dem Fall die 2355492). Hinter diesem casekey sind mehrere Daten, unter anderem die casereference, eventduedate und eventdate. Jedoch gibt es bei eventduedate (Fristdatum) nicht nur ein Datum, sondern zwei. Folglich erhalte ich zwei Datensätze mit jeweils den zwei Daten (Plural von Datum^^). Ich möchte aber nur ein Datensatz erhalten und deswegen mach ich ein Group by rein und mit MAX(Datum) erhalte ich das aktuellste Datum.

Bei ce.eventdate sind eigentlich auch zwei Daten (Plural von Datum^^) drin, deswegen mach ich da eigentlich auch ein MAX davor. Ich habe das jetzt nur als Beispiel genommen, weil in meinem richtigen Code sind noch 15 weitere Sachen bei SELECT. (Ich möchte jedoch nicht mein ganzes Code posten). Soll ich dann alles hinter Group by packen?
 
Die restlichen Daten sind also in beiden Zeilen gleich?
In dem Fall hab ich was für dich. Ein Tutorial das ich mal vor geraumer Zeit veröffentlicht habe. Ist zwar für MySQL, gilt jedoch fast gleich auch für Oracle. Einfach drauf achten, dass bei Oracle der Alias für ein Subquery und Tabellen ohne 'AS' geschrieben wird
MySQL Aktuelle Einträge pro Gruppe auslesen

Was im Beispiel die 2 Währungen sind, sind bei dir die Schlüsselfelder.
 
Zurück