#tsql #sql-server-2008
#tsql #sql-server-2008
Вопрос:
Когда я пытаюсь выполнить следующий оператор, я получаю эту ошибку:
«Оператор SELECT, который присваивает значение переменной, не должен сочетаться с операциями извлечения данных».
DECLARE @OFR DECIMAL(18,2)
;
SELECT @OFR =
CASE SUM(ofr.Quantity)
WHEN 0 THEN 0
ELSE SUM(ofr.Gross) / SUM(ofr.Quantity)
END
FROM DistributionCosts ofr
;
SELECT @OFR
Я просто хочу вставить результат этого оператора case в переменную, и я застрял здесь.
Есть идеи?
Спасибо.
Комментарии:
1. Это работает для меня. Уверен, что у вас нет другого столбца в вашем запросе?
2. Да, у меня были другие столбцы, которые я пропустил, я расставил по ним. Извините и спасибо!
Ответ №1:
Вы уверены, что именно в этом заключается ваша ошибка? Я просто выполнил приведенное ниже утверждение, и оно сработало:
DECLARE @OFR DECIMAL(18,2)
;
with DistributionCosts as
(
select 1 as quantity, 5 as gross
union
select 5 , 20
)
SELECT @OFR =
CASE SUM(ofr.Quantity)
WHEN 0 THEN 0
ELSE SUM(ofr.Gross) / SUM(ofr.Quantity)
END
FROM DistributionCosts ofr
;
SELECT @OFR
Если я выбираю столбец в дополнение к установке переменной, я получаю вашу ошибку… Если вы выбираете другой столбец, вам нужно будет либо прекратить выбор этого столбца, либо также назначить этот столбец локальной переменной.
Комментарии:
1. Да, это была проблема, я расставил другие столбцы… Спасибо!