У меня есть предмет 200400, который хранится в 6 разных местах.
У каждого местоположения есть минимальное количество, которое они хранят на складе, количество в наличии и количество в заказе.
Только один из этих магазинов может заказать товар (магазин mfg). Поэтому мне нужно добавить результаты NeedToStockToStore в одно поле
Затем я воспользуюсь этим вычисленным полем, чтобы вычесть количество заказов в магазинах mfg, чтобы проверить, не превышает ли заказ заказ.
Итак, я хочу, чтобы мой набор результатов был таким же, как сейчас (ниже), но у меня есть еще один столбец для вызова OnOrderCheck - все строки будут иметь значение NULL для хранилища 3, где будет указано 1
Поскольку магазин mfg заказал 6, но им нужно было только заказать 5, поэтому они заказали 1 для многих.
item desc store store_min store_max on_hand on_order mfg store NeedToStockToStore
200400 SVAssembly 1 1 1 0 0 3 1
200400 SVAssembly 2 1 1 0 0 3 1
200400 SVAssembly 3 1 1 0 6 3 1
200400 SVAssembly 5 1 1 0 0 3 1
200400 SVAssembly 7 1 1 1 0 3 0
200400 SVAssembly 8 1 1 0 0 3 1
Это код SQL, который я использую для получения вышеуказанной информации:
SELECT T0.[ItemCode],
T0.[ItemName],
T2.[WhsCode] as [Whse],
T2.[MinStock] as [Store Min],
T2.[MaxStock] as [Store Max],
T2.[OnHand],
T2.[OnOrder] as [On PO],
T0.[MinLevel] as [Corp Min],
T0.[MaxLevel] as [Corp Max],
T0.U_MFGSite,
MAX(CASE
WHEN T2.[WhsCode] = T0.[U_MFGSite] THEN T2.[MinStock] - T2.[OnHand]
ELSE ( CASE
WHEN T2.[OnHand] < T2.[MinStock] THEN
( T2.[MinStock] - (
T2.[OnHand] + T2.[OnOrder] ) )
ELSE 0
END )
END) as NeedToStockToStore
FROM asap.dbo.OITM T0
INNER JOIN asap.dbo.OITW T2
ON T0.ItemCode = T2.ItemCode
WHERE t0.itemcode = '200400'
and t2.minstock <> 0
and t2.maxstock <> 0
group by T0.[ItemCode],
T0.[ItemName],
T2.[WhsCode],
T2.[MinStock],
T2.[MaxStock],
T2.[OnHand],
T2.[OnOrder],
T0.[MinLevel],
T0.[MaxLevel],
t0.U_mfgsite