У меня есть таблица продуктов и ProductStockTransactions (SKU, StockingCode, TransactionDate, TransactionQuantity). Каждый столбец обязателен. PST является дочерней таблицей, а product является родительской таблицей.
A = Добавить, R = Возврат, S = продано
Q-- Возвращает количество товара на складе . **
SELECT amtInStock = (
SELECT ISNULL(SUM(T1.transactionQuantity), 0)
FROM ProductStockTransactions AS T1
WHERE T1.SKU = Product.SKU
AND T1.stockingCode IN ('A', 'R')
) - (
SELECT ISNULL(SUM(T1.transactionQuantity), 0)
FROM ProductStockTransactions AS T1
WHERE T1.SKU = Product.SKU
AND T1.stockingCode IN ('S')
)
Я не могу понять, почему здесь используется эта функция ISNULL, и я думаю, что здесь мы никогда не получим нулевое значение.
Я также запутался, как выполняется этот запрос. Как и вначале, мы суммируем все значения A или r, а затем вычитаем из общего значения Sold (S) или одно за другим, берем каждое значение A или R, а затем вычитаем его, а затем суммируем, наконец. Может кто-нибудь объяснить код.