Объединение функций IFNULL, SUM и WHERE для отображения доступного количества
Я хочу вернуть доступную стоимость акций с помощью запроса, в котором сумма заказов вычитается из общей суммы запасов, а сумма заказа - = NULL
превращается в 0
, Таким образом, если в заказах нет открытых позиций, он просто показывает общий запас. В противном случае необходимо вычесть несколько предметов на складе.
Отказ от ответственности: Относительно новичок в более сложных запросах, поэтому любое объяснение того, что я делаю неправильно, будет невероятно полезным в будущем!
В настоящее время пытаясь запросить SQL Server, я дошел до того, что я могу заставить большую часть запроса работать, кроме ISNULL
функция
SELECT dbo.[Items].[Productcode Customer],
dbo.[Items].Description,
dbo.[Items].[Description 2],
dbo.[Items].[EAN Code],
(SELECT SUM(dbo.[Entry].[Quantity])
FROM dbo.[Entry]
WHERE dbo.[Logistic Items].No_ = dbo.[Entry].[Item SKU No_]) -
(SELECT SUM(dbo.[Order Lines].[Quantity (Base)])
FROM dbo.[Order Lines]
WHERE dbo.[Items].No_ = dbo.[Order Lines].[Item No_]
AND dbo.[Order Lines].[Document No_] LIKE '%UIT%') AS Quant_avail
FROM dbo.[Items]
LEFT JOIN dbo.[Order Lines] ON dbo.[Items].No_ = dbo.[Order Lines].[Master Item No_]
WHERE dbo.[Items].[Customer Code] = 'KL0134'
GROUP BY
"Items"."No_",
"Items"."Productcode Customer",
"Items".Description,
"Items"."Description 2",
"Items"."EAN Code"
WHERE
Функция должна указывать, что только исходящие заказы должны быть вычтены.
Я получаю все поля, которые хочу, но столбец Quant_avail показывает только NULL
, Это имеет смысл, потому что на заказах нет товаров. Все, что мне нужно сделать сейчас, это преобразовать NULL
поле для 0
в:
(SELECT SUM(dbo.[WMS Order Lines].[Quantity (Base)])
FROM dbo.[WMS Order Lines]
WHERE dbo.[Logistic Items].No_ = dbo.[WMS Order Lines].[Master Item No_]
AND dbo.[WMS Order Lines].[Document No_] LIKE '%UIT%') AS Quant_avail
1 ответ
Просто позвони ISNULL
с вашим оригиналом Quant_avail
в качестве параметра:
ISNULL(
(SELECT SUM(dbo.[WMS Order Lines].[Quantity (Base)])
FROM dbo.[WMS Order Lines]
WHERE dbo.[Logistic Items].No_ = dbo.[WMS Order Lines].[Master Item No_]
AND dbo.[WMS Order Lines].[Document No_] LIKE '%UIT%')
, 0) AS Quant_avail