michael jay dedumo Ответов: 1

Функция isnull требует 2 аргумента(ов)


У меня есть 3 таблицы импортированные из msaccess в sql server
0.Sumo_Stocks
1.Sumo_In
2.Sumo_Out
я хочу создать запрос для суммирования всего кол-ва из [Sumo_In] и [Sumo_Out] и вычислить все фактическое кол-во.

Что я уже пробовал:

SELECT Sumo_Stocks.ID, Sumo_Stocks.Description, Sumo_Stocks.Unit, 
(SELECT SUM(QTY) AS [IN QTY] FROM  Sumo_In WHERE Material_ID=Sumo_Stocks.ID) AS [In Qty], 
(SELECT SUM(QTY) AS [OUT QTY] FROM  Sumo_Out WHERE Material_ID=Sumo_Stocks.ID) AS [Out Qty], 
IIf(IsNull(IIf(IsNull([In Qty]),0-[Out Qty],[In Qty]-[Out Qty])),0,IIf(IsNull([In Qty]),0-[Out Qty],[In Qty]-[Out Qty])) AS [Actual Qty]
FROM Sumo_Stocks

Этот код отлично работает с msAccess, но когда я попытался подключиться к SQL Server, появилась ошибка Msg 174.

Вот заявление IIF, чтобы получить фактическое/текущее кол-во.
IIf(IsNull(IIf(IsNull([In Qty]),0-[Out Qty],[In Qty]-[Out Qty])),0,IIf(IsNull([In Qty]),0-[Out Qty],[In Qty]-[Out Qty])) AS [Actual Qty]

1 Ответов

Рейтинг:
6

michael jay dedumo

Я решил свою проблему.
Теперь вот мой код.

SELECT Sumo_Stocks.ID, Sumo_Stocks.Description, Sumo_Stocks.Unit, 
(ISNULL((SELECT SUM(QTY) AS [IN QTY] FROM  Sumo_In WHERE Material_ID=Sumo_Stocks.ID),0)) AS [In Qty], 
(ISNULL((SELECT SUM(QTY) AS [OUT QTY] FROM  Sumo_Out WHERE Material_ID=Sumo_Stocks.ID),0)) AS [Out Qty],
(ISNULL((SELECT SUM(QTY) AS [IN QTY] FROM  Sumo_In WHERE Material_ID=Sumo_Stocks.ID),0))-(ISNULL((SELECT SUM(QTY) AS [OUT QTY] FROM  Sumo_Out WHERE Material_ID=Sumo_Stocks.ID),0))
AS [Actual Qty]
FROM Sumo_Stocks