Hallo,
vielleicht könnt Ihr mir kurz weiterhelfen.
Ich habe eine Tabelle mit vielen Prozentwerten und verschiedenen Kunden. (z.B. 150 Prozentwerte für 10 Kunden)
Die Summe aller Prozentwerte sollte pro Kunde 1 ergeben. Da es aber teilweise zu Unregelmäßigkeiten in den Prozenten kommt, muss ich mir einen Rest ermitteln und diesen dann pro Kunde aufaddieren.
Diese mache ich mit folgendem SQL-Statement, was auch funktioniert.
Zur Erklärung:
MAX(Prozent) As MAX_prozent:
Ermittelt die größte Prozentzahl, auf die dann der Rest aufaddiert werden soll.
sum(Prozent) As Summe_Prozent:
Ergibt die Summe aller Prozente pro Kunde
1-(sum(Prozent)) As Rest:
Ergibt den Rest, der dann aufaddiert werden soll pro Kunde
Jetzt ist meine Frage, wie mache ich das direkt mit einem Update auf die Tabelle?
Folgendes hat nicht funktioniert:
Vielen Dank schon mal...
vielleicht könnt Ihr mir kurz weiterhelfen.
Ich habe eine Tabelle mit vielen Prozentwerten und verschiedenen Kunden. (z.B. 150 Prozentwerte für 10 Kunden)
Die Summe aller Prozentwerte sollte pro Kunde 1 ergeben. Da es aber teilweise zu Unregelmäßigkeiten in den Prozenten kommt, muss ich mir einen Rest ermitteln und diesen dann pro Kunde aufaddieren.
Diese mache ich mit folgendem SQL-Statement, was auch funktioniert.
Code:
SELECT Kunde, MAX(Prozent) As MAX_prozent, Prozent = case when max(Prozent) < 1 then max(Prozent) + (1-(sum(Prozent))) else max(Prozent) end FROM Tabprozent GROUP BY Kunde
MAX(Prozent) As MAX_prozent:
Ermittelt die größte Prozentzahl, auf die dann der Rest aufaddiert werden soll.
sum(Prozent) As Summe_Prozent:
Ergibt die Summe aller Prozente pro Kunde
1-(sum(Prozent)) As Rest:
Ergibt den Rest, der dann aufaddiert werden soll pro Kunde
Jetzt ist meine Frage, wie mache ich das direkt mit einem Update auf die Tabelle?
Folgendes hat nicht funktioniert:
Code:
UPDATE Tabprozent SET Prozent = case when max(Prozent) < 1 then max(Prozent) + (1-(sum(Prozent))) else max(Prozent) end WHERE Prozent = max(Prozent) GROUP BY Kunde
Comment