Оператор SQL с формулой возвращает неправильное значение в столбце.То, что я пытаюсь сделать, это рассчитать абсолютное значение на основе нескольких условий.Во-первых, когда в параметре risk_class указано «Недостаточно образцов» или «Обычная цена», абсолютное значение должно быть равно нулю.Во-вторых, когда разница между режимом и ценой меньше нуля, абсолютное значение должно быть равно нулю.Если все эти условия не выполняются, то risk_abs должен быть разницей между режимом и ценой, умноженной на столбец количества, соответствующий строке.
UPDATE dbo.import_company
SET risk_abs = ROUND(t.risk_abs, 0)
FROM (
SELECT invoice_ref, risk_class, modus, price, quantity,
CASE
WHEN risk_class = 'Onvoldoende observaties' THEN 0
WHEN risk_class = 'Gefactureerd tegen reguliere prijs' THEN 0
WHEN (modus - price) < 0 THEN 0
ELSE (modus - price) * quantity
END AS risk_abs
FROM dbo.import_company
)
t WHERE t.invoice_ref = dbo.import_company.invoice_ref
SELECT invoice_ref, article_code, quantity, price, modus, risk_class, risk_abs
FROM dbo.import_company
WHERE risk_class = 'Gefactureerd tegen reguliere prijs'
Я не понимаю, почему мой результат отличается,и формулы не работают.См. Ниже
Я не понимаю, как рассчитывается 140 и почему он игнорирует все утверждения?
Любые советы и советына то, что я делаю неправильно, добро пожаловать!