Anmelden

View Full Version : Lagermonatsendbestände



GruberWolfgang
25-01-18, 16:04
Hallo zusammen,
ich möchte per SQL die Monatsendbestände jedes Monats aus einer Lagerbewegungsdatei ermitteln. Die Lagerbewegungsdatei enthält neben Bewegungsdatum und Bewegungsmenge auch den Bestand nach Buchung der Bewegungsmenge.
Das ganze funktioniert einwandfrei über eine CTE mit row_number() und Partition by, order by wenn ich in jedem Monat mindestens eine Bewegung habe. Das ist in der Praxis aber natürlich nicht der Fall. Die OLAP-Partitionierung kann also hier vermutlich nicht zum Ziel führen. Hat jemand eine Idee, wie man das lösen kann.

BenderD
25-01-18, 18:55
... da braucht man weder row_number, noch partition by, ein einfacher left outer join mit einer Datei, die alle Monate enthält sollte reichen!

D*B

Fuerchau
26-01-18, 07:56
"Das ist in der Praxis aber natürlich nicht der Fall."
Das kann ich bestätigen, da nicht jeden Monat eine Bewegung entstehen muss und der letzte Bestand durchaus schon Jahre da rumliegen kann.

Vor Jahr(zehnt)en habe ich mal eine Anfangsbestandsermittlung bezogen auf ein Datum geschrieben:




select lbfirm, lbwknr, lbtenr, lblanr
,max(digits(lbdate) concat digits(lbtime) concat digits(lbrfnr) concat ';' concat char(lblgbe) concat ';' concat char(lbprei) concat ';' concat char(lbmeng) ) as lbbest
from lgbw
where lbfirm=? and lbwknr=? and lbdate < ? and lbtenr<>' ' and lbmeng <> 0
group by lbfirm, lbwknr, lbtenr, lblanr"



Durch die Max-Funktion erhält man das letzte Datum (Zeit+ ID) und durch die Concat's alle benötigten Werte auf dieses Datum.
Im Ergebnis muss ich die Inhalte dann nur wieder trennen.
Es würde auch reichen, nur die LBRFNR mit aufzunehmen und damit wieder einen Join durchzuführen.

Nun kann man die Bestände zu jedem beliebigen Stichtag ermitteln.