Announcement

Collapse
No announcement yet.

Update auf Tabelle

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Update auf Tabelle

    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.


    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
    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:

    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
    Vielen Dank schon mal...

  • #2
    Hallo Toska,

    im UPDATE kannst Du keine Gruppierung verwenden.

    Aber Du kannst Dein ursprüngliches SELECT nehmen und als View für das UPDATE nutzen.
    Da ich nicht die Tabellen/Daten habe, ist es ungetestet, Syntax sollte aber soweit stimmen.

    [highlight=SQL]
    UPDATE Tabprozent
    SET Prozent = SUB.Prozent
    FROM Tabprozent
    INNER JOIN
    (SELECT Kunde,
    MAX(Prozent) As MAX_prozent,
    Prozent = case when max(Prozent) < 1
    then max(Prozent) + (1-(sum(Prozent)))
    else max(Prozent) end
    GROUP BY Kunde) AS Sub
    ON TabProzent.Kunde = SUB.Kunde
    AND Tabprozenz.Prozent = SUB.MAX_Prozent
    [/highlight]
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment

    Working...
    X