Необходимо суммировать поля из набора результатов в sql - PullRequest
0 голосов
/ 15 сентября 2011

У меня есть предмет 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  

1 Ответ

0 голосов
/ 30 октября 2018

WITH ROLLUP отлично подойдет для того, чего вы пытаетесь достичь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...