Werte aus Gerade berechneter Spalte

Ok, versuche ich es mal mit einem Code.

Der Ansatz war folgender:
Code:
DECLARE @pps DECIMAL(18, 2) = 0

SELECT o.*,
       CASE
           WHEN o.WE <> NULL THEN
               CASE
                   WHEN ol.menge IS NOT NULL THEN @pps = (o.wert + ISNULL(ol.menge, 0) * @pps) / (ISNULL(ol.menge, 0) + o.Menge_Original)
                   ELSE @pps
               END
           ELSE @pps
       END AS calc_pps,
       FORMAT(@pps, 'N2') AS preis_je_stück
FROM [dbo].[GLD_Test] o
LEFT JOIN [dbo].[GLD_Test] ol ON o.Kontonummer - 1 = ol.Kontonummer
                             AND o.Materialnummer  = ol.Materialnummer
                             AND o.Werk               = ol.Werk

Was er hier nicht mag ist das "=" nach @pps. Kann mir jemand sagen warum er das nicht mag?
 
Werbung:
Also... wenn ich das richtig verstehe machst du FIFO, first in, frist out. Das ist jetzt nicht grade easy aber mit dem passenden Begriff "FIFO" kommt man sehr viel weiter.
Stored Procedure:
Window-Function:

Das mit Window-Function ist muss man natürlich erstmal durchdringen und sich dann auch überlegen wie performant das laufen wird. Ich würde jetzt mal annehmen, das man in jedem Fall diese Berechnung irgendwo zwischen speichern wollen würde, dann kann man es auch per Trigger für jeden neuen Datensatz berechnen, bis alles kalkuliert ist. Das würde ich dann aber nicht in einer Spalte machen sondern in einer eigenen Tabelle, in der Wareneingang und Warenausgang einander zugeordnet werden.
 
Hallo ,

die Beiträge waren hilfreich, können jedoch nicht mein Problem lösen, da auf den Konto eigentlich immer nur Kosten drauf gebucht werden. Es handelt sich nämlich um Bezugsnebenkosten. Wäre das nicht der Fall würde das wirklich gut klappen.

Daher die Frage. Würdest du dir einmal ein Code anschauen und mir sagen, warum das ":=" bzw. das "=" in der 7. Zeile nicht bei mir funktioniert?
 
Werbung:
Also dein Code ist MSSQL? @pps ist eine Variable, du versuchst also innerhalb von dem CASE eine Variable zu befüllen oder, wenn Bedingung nicht erfüllt, die Variable auszugeben. Das scheint mir komisch, ich glaube nicht das das gehen sollte.

Eventuell willst du diese Variable ja mit jeder Zeile fortschreiben, das wird aber nicht gehen. Ein Select ist ein Vorgang, der kann nicht eine Variable mehrfach setzen und dann gleich wieder verwenden. Du wirst deine Berechnung für jede Zeile ausgeben müssen und dann mit einem Äußeren Select und einer Window-Function die Spalte calc_pps laufend aufsummieren z.B.
 
Zurück
Oben