Я пытаюсь получить следующий SQL код, чтобы работать, однако я борюсь с поиском, как сделать несколько вычислений с сазом, вот код:Несколько Расчетов в сазе SQL
SELECT
dbo.Table1.PrimaryKeyID,
CASE
WHEN (number1 >0 AND number2 = 0)
THEN number1 = number1 + CalcView.Quantity
WHEN (number1 =0 AND number2 <=0)
THEN number3 = number3 + CalcView.Quantity,
number2 = number2 - CalcView.Quantity
WHEN (number1 =0 AND number2 >0)
THEN number3 = number3 + number2
number1 = number1 + (CalcView.Quantity - number2)
number2 = 0
END
FROM Table1
INNER JOIN CalcViewON Table1.PrimaryKeyID= CalcView.PrimaryKeyID
WHERE Table1.PrimaryKeyID= CalcView.PrimaryKeyID
- мнение присутствует, чтобы избавиться от SUM(), который заставит меня использовать GROUPBY
- имена не то, что я использую, я изменил их, чтобы сделать его проще underst и ..
Как вы можете видеть, что я только что поставил вычисления в пределах THEN в данный момент, пожалуйста, может кто-нибудь мне точку в правильном направлении, как получить это заявление на работу? большое спасибо за любую помощь вы можете дать мне
Примеры:
Case 1
Number1 = 5
Number2 = 0
CalcView.Quantity = 3
5 = 5 + 3 (8)
Case 2
Number 1 = 5
Number 2 = 3
Number 3 = 2
CalcView.Quantity = 3
2 = 2 + 3 (5)
3 = 3 - 3 (0)
Case 3
Number 1 = 5
Number 2 = 3
Number 3 = 2
CalcView.Quantity = 6
2 = 2 + 3 (5)
1 = 1 + (6 – 3) (4)
Number2 = 0
цель: обновить число1, число2 и number3 на основе утверждений 3 КОГДА. в настоящее время я использую инструкцию select, чтобы убедиться, что я достигаю правильных выходов ...
Какие альтернативы существуют в заявлениях CASE, которые могли бы помочь мне достичь моей цели? Еще раз спасибо
Ваш синтаксис все не так, вы пытаетесь выбрать 4 колонки в вашем примере? Если это так, вам потребуются три отдельных случая. Можете ли вы предоставить пример вывода того, что вы хотите, чтобы ваш запрос возвращался? – Tobsey
В дополнение к вопросам Тобейса вы могли бы предоставить образец ввода? Вы можете использовать http://sqlfiddle.com/ в качестве базы для создания сценария для нас –
Непонятно, что вы пытаетесь сделать. Ваши первые два «Когда» возвращают одинаковое значение. Затем в третьем и четвертом «Когда» вы устанавливаете переменные? Вы не можете устанавливать переменные внутри оператора case, вы можете вернуть значение только. Итак, «number1 = case, когда (number1 = 0 и number2 = 0), а затем 15 else 14 end» будет так, как вы устанавливаете переменную с аргументом case. –