Moin Moin,
ich versuche ein berechnete Spalte zu erzeugt, die Hierarchisch nach Datum Aufgebaut ist. Da ich jedoch immer die Summe der darüberliegenden Werte benötigt um auf richtigen Wert der nachfolgenden zu kommen habe ich ein Problem, da SQL selber nicht auf seine soeben erzeugte Spalte referenzieren kann.
Hier rechne ich also die Summe des Wareneingangs + die Summe aus bisherigen Warenlieferung (WL1<- ist ein Minusbetrag) um diesen Wert durch die Anzahl der noch existieren Menge zuteilen um diese dann wieder mit der aktuellen Menge an Warenlieferung zu multiplizieren ((WE GESAMT + WL Gesamt)/Gesamtmenge)*zu entnehmende Menge.
Ich hatte dann versucht die Tabelle mit sich selber zu Join um zu sagen gibt mir die Summe aus Tabelle2 wo das Datum kleiner ist als das Datum der Tabelle1, ohne Erfolg.
Aber wie macht man sowas den richtig?
So sieht übrigens der ganze Code aus:
Ich hätte mir eigentlich sowas vorgestellt
ich versuche ein berechnete Spalte zu erzeugt, die Hierarchisch nach Datum Aufgebaut ist. Da ich jedoch immer die Summe der darüberliegenden Werte benötigt um auf richtigen Wert der nachfolgenden zu kommen habe ich ein Problem, da SQL selber nicht auf seine soeben erzeugte Spalte referenzieren kann.
SQL:
((SUM(WE) OVER (PARTITION BY Kontonummer, Materialnummer, Werk Order by Erfassungsdatum ROWS UNBOUNDED PRECEDING)
+ SUM(WL1) OVER (PARTITION BY Kontonummer, Materialnummer, Werk Order by Erfassungsdatum ROWS UNBOUNDED PRECEDING))
/ LAG(MENGE) OVER (PARTITION BY Kontonummer, Materialnummer, Werk Order by Erfassungsdatum))
*Menge_Original
Ich hatte dann versucht die Tabelle mit sich selber zu Join um zu sagen gibt mir die Summe aus Tabelle2 wo das Datum kleiner ist als das Datum der Tabelle1, ohne Erfolg.
Aber wie macht man sowas den richtig?
So sieht übrigens der ganze Code aus:
SQL:
Select
Kontonummer
,Materialnummer
,Werk
,Menge_Original
,Menge
,[Wert in Hauswährung (Original)]
,WE
,WL1
,CASE WHEN Belegart = 'WL' AND WL1 IS NULL
THEN ((SUM(WE) OVER (PARTITION BY Kontonummer, Materialnummer, Werk Order by Erfassungsdatum ROWS UNBOUNDED PRECEDING)
+ SUM(WL1) OVER (PARTITION BY Kontonummer, Materialnummer, Werk Order by Erfassungsdatum ROWS UNBOUNDED PRECEDING))
/ LAG(MENGE) OVER (PARTITION BY Kontonummer, Materialnummer, Werk Order by Erfassungsdatum))
*Menge_Original
ELSE NULL
END AS WL2
,Materialstatus
,Materialklasse
,Warengruppe
,Cluster_1
,Cluster_2
,Belegnummer
,Erfassungsdatum
,Belegart
FROM Level1
Where Kontonummer like '0065%'
ORDER BY Kontonummer,Materialnummer, Werk, Erfassungsdatum
Ich hätte mir eigentlich sowas vorgestellt
SQL:
Select
Kontonummer
,Materialnummer
,Werk
,Menge_Original
,Menge
,[Wert in Hauswährung (Original)]
,WE
,WL1
,CASE WHEN Belegart = 'WL' AND WL1 IS NULL
THEN ((SUM(WE) OVER (PARTITION BY Kontonummer, Materialnummer, Werk Order by Erfassungsdatum ROWS UNBOUNDED PRECEDING)
+ SUM(WL1) OVER (PARTITION BY Kontonummer, Materialnummer, Werk Order by Erfassungsdatum ROWS UNBOUNDED PRECEDING)
+ SUM(WL2) OVER (PARTITION BY Kontonummer, Materialnummer, Werk Order by Erfassungsdatum ROWS UNBOUNDED PRECEDING))
/ LAG(MENGE) OVER (PARTITION BY Kontonummer, Materialnummer, Werk Order by Erfassungsdatum))
*Menge_Original
ELSE NULL
END AS WL2
,Materialstatus
,Materialklasse
,Warengruppe
,Cluster_1
,Cluster_2
,Belegnummer
,Erfassungsdatum
,Belegart
FROM Level1
Where Kontonummer like '0065%'
ORDER BY Kontonummer,Materialnummer, Werk, Erfassungsdatum
Zuletzt bearbeitet: