Hallo,
erstmal sollen alle Bestände kommen. Für ORDER müssen die also einen kleinen Wert bekommen, danach alle Lager-Leichen, die müssen einen größeren Wert erhalten.
SELECT
...
,ISNULL(lager) AS sort
...
ORDER BY sort, datum
Wenn lager einen Wert hat, ist sort FALSE und kommt bei ORDER zuerst.
Jetzt musst du nur noch den Fall klären, wenn der Bestand 0 (Ziffer 0) ist.
Lieben Gruß, Kalle