Добавить вторую базу данных с информацией о веб-сайтах? - PullRequest
0 голосов
/ 18 июня 2019

Итак, мой веб-сайт в настоящее время получает информацию о запасах со склада "J" в базе данных под названием InvWarehouse, теперь мы хотим добавить "JT", чтобы он извлекал данные как из "J", так и из "JT"

У нас есть запланированная хранимая процедура под названием «[spc_Schedule_Update_Qty_Stock]», которая запускает скрипт на заднем плане, обновляя новую информацию для веб-сайта.Когда я выполнил хранимую процедуру, она вернула значение 0, я не совсем уверен, что это значит.

ALTER PROCEDURE [dbo].[spc_Schedule_Update_Qty_Stock]
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    UPDATE      item
    SET         QtyOnHand = CASE WHEN (inv.QtyOnHand - inv.QtyAllocated) < 0 THEN 0 ELSE (inv.QtyOnHand - inv.QtyAllocated) END--inv.QtyOnHand
    FROM        tb_Item item WITH (NOLOCK)
    INNER JOIN  [105.255.132.248].SysproCompanyA.dbo.InvWarehouse inv WITH (NOLOCK)
    ON          inv.StockCode = item.sCode  COLLATE SQL_Latin1_General_CP1_CI_AS 
    WHERE       inv.Warehouse in ('J','JT')
END

Я ожидаю, что на выходе будет 9, если "J" имеет 7 поясови у «JT» есть 2, с тем, что я сделал до сих пор, без изменений.

1 Ответ

0 голосов
/ 18 июня 2019

Вы должны сделать что-то вроде ниже.Ваш исходный запрос выполняет расчеты только на уровне отдельного склада.Вы должны агрегировать запасы на двух складах, а затем применить их для операции ОБНОВЛЕНИЯ.

;WITH WarehousesAvailability AS
(
  SELECT inv.StockCode, Sum(inv.QtyOnHand) AS QtyOnHand, Sum(QtyAllocated) AS QtyAllocated
FROM  [105.255.132.248].SysproCompanyA.dbo.InvWarehouse inv 
WHERE       inv.Warehouse in ('J','JT')
GROUP BY inv.StockCode
)
UPDATE      item
    SET         QtyOnHand = CASE WHEN (inv.QtyOnHand - inv.QtyAllocated) < 0 THEN 0 ELSE (inv.QtyOnHand - inv.QtyAllocated) END--inv.QtyOnHand
    FROM        tb_Item item 
    INNER JOIN  WarehousesAvailability  inv 
    ON          inv.StockCode = item.sCode  COLLATE SQL_Latin1_General_CP1_CI_AS 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...