Aufsummieren von Werten mit Bedingung

Hallo,
ich müsste innerhalb einer Tabelle Werte aufsummieren, die aber abhängig davon, ob in der Tabelle eine weitere Zeile vorkommt, in deren Spalte ein höherer Wert steht.
Klingt komisch, ist aber so.
Also folgendermassen:
Tabelle LOHN mit Spalten z.B.: Jahr, Monat, Personalnr, Count, Gleitzeit, etc.
Normalerweise existiert nur eine Zeile pro Monat, dann wäre der Count = 0.
Jetzt kann es aber sein, dass für einen Monat mehrere Zeilen vorkommen, je nach dem, ob die Lohnabrechnung schon einmal korrigiert wurde oder nicht.
Wenn eine Korrekturabrechnung vorliegt, dann gibt es weitere Zeilen mit Count=1, Count=2, usw.
Jetzt soll die Summe aller Gleitzeitbuchungnen gebildet werden, aber nur diejenigen Zeilen berücksichtigt werden, die entweder nur einmal vorkommen, oder deren Count den höchsten Wert pro Monat hat.
Mit einem einfachen SUM(Gleitzeit) FROM LOHN komme ich da ja nicht weiter.
Was schlagt Ihr vor?
DANKE & Grüße
ANDI :smile:

Hallo.

schade, dass Du Dein DBMS nicht erwähnst, aber trotzdem …

Tabelle LOHN mit Spalten z.B.: Jahr, Monat, Personalnr, Count,
Gleitzeit, etc.

Normalerweise existiert nur eine Zeile pro Monat, dann wäre
der Count = 0.

Pro Jahr/Monat und Personalnummer, wage ich mal reinzudeuten. Und die Feldbezeichnung „Count“ ist eine unglückliche …

SELECT DISTINCT Jahr,Monat,PersonalNr, Max(Count) AS MaxCount
FROM tabelle GROUP BY Jahr,Monat,Personalnr;

Das sollte als Basis für nachfolgende Auswertungen taugen - wie gesagt, ich weiß nicht, welches DBMS Du benutzest; müsstest also ggf. noch anpassen.

Gruß Eillicht zu Vensre

Hallo.

schade, dass Du Dein DBMS nicht erwähnst, aber trotzdem …

Sorry, hab’ ich vergessen. Das ganze läuft unter Oracle 9i und soll mit SQL-Plus abgefragt werden.

Tabelle LOHN mit Spalten z.B.: Jahr, Monat, Personalnr, Count,
Gleitzeit, etc.

Normalerweise existiert nur eine Zeile pro Monat, dann wäre
der Count = 0.

Pro Jahr/Monat und Personalnummer, wage ich mal reinzudeuten.

Äh, ja, natürlich - sorry…

Und die Feldbezeichnung „Count“ ist eine unglückliche …

Hab’ ich mir nicht ausgedacht… :wink:

SELECT DISTINCT Jahr,Monat,PersonalNr, Max(Count) AS MaxCount
FROM tabelle GROUP BY Jahr,Monat,Personalnr;

Gut, jetzt weiß ich welchen Count-Wert ich beachten muss, aber wie bekomme ich nun den Gleitzeitwert addiert, abhängig von Count?

Das sollte als Basis für nachfolgende Auswertungen taugen -
wie gesagt, ich weiß nicht, welches DBMS Du benutzest;
müsstest also ggf. noch anpassen.

Gruß Eillicht zu Vensre

DANKE nochmal