Einzelnen Beitrag anzeigen

Benutzerbild von mika
mika

Registriert seit: 25. Okt 2002
176 Beiträge
 
Delphi 6 Professional
 
#1

Kompliziertes Update Statement

  Alt 15. Mai 2012, 11:02
Datenbank: ADS • Version: 9 • Zugriff über: ADS Komponenten, SQL
Hallo Forum,

ich hoffe dass ihr mir eventuell etwas auf die Sprünge helfen könnt. Kurz zu meinem Problem, ich muss eine Lagerumsatzgeschwindigkeit berechnen. Soweit nicht so wild. Meine Tabelle enthält allerdings pro Geschäftsjahr ca 70k Datensätze, weswegen ich nicht jeden einzeln bearbeiten möchte. Das würde Stunden dauern. Die Formel ist recht einfach und ich hab gehofft das ganze in einem SQL unterbringen zu können.

Meine Tabelle sieht im groben so aus
Code:
Jahr: Integer
Monat: Integer
Kunde: Integer
Artikel: Integer
Col: String
AbverkauftMenge: CurDouble
IstBestand: CurDouble
LUG: CurDouble
Die LUG soll so berechnet werden:

LUG = (Summe(AbverkauftMenge) der letzten 12 Monate) / (Summe(IstBestand) der letzten 13 Monate) * 13

Jetzt habe ich gehofft dass ich mit einem Statement der folgenden Art das ganze einfach dem DB-Server überlassen könnte:
Code:
UPDATE
  Statistik
SET
  LUG =
  ( 
    SELECT
      SUM(AbverkauftMenge) AS Menge
    FROM
      Statistik
    WHERE
     Kunde = Statistik.Kunde
     AND Artikel = Statistik.Artikel
     AND Col = Statistik.Col
      AND ((Jahr >= Statistik.Jahr-1 AND Monat >= Statistik.Monat+1)
     OR (Jahr <= Statistik.Jahr AND Monat <= Statistik.Monat))
  )
  / 
  ( 
    SELECT
      SUM(IstBestand) AS Menge
    FROM
      Statistik
    WHERE
     Kunde = Statistik.Kunde
     AND Artikel = Statistik.Artikel
     AND Col = Statistik.Col
      AND ((Jahr >= Statistik.Jahr-1 AND Monat >= Statistik.Monat)
     OR (Jahr <= Statistik.Jahr AND Monat <= Statistik.Monat))
  )
  * 13
Jedoch kommen bei diesem Statement für alle Datensätze der gleiche Wert in jeder Zelle raus. Ich denke das die Kunde/Artikel/Col Where-Klausel nur ein einziger Wert genommen wird...

Vielleicht ist hier ja n DB Profi der mir da n bisschen auf die Sprünge helfen kann, Danke schonmal im voraus!

Lg, Mika

// Edit: Gelöst: Danke für eure Hilfe !
:: don't Panic ::

Geändert von mika (16. Mai 2012 um 09:13 Uhr) Grund: solved
  Mit Zitat antworten Zitat