Я пытаюсь решить эту проблему SQL, когда мой код выдает ошибку
Недопустимая синтаксическая ошибка рядом с "<"
Когда я использую переменную @totalprice
. Без использования переменной CASE
работает, и запрос выполняется правильно, но я хочу, чтобы он был переменной
Благодарность
Declare @totalprice int
Select
Case @totalprice
when "Age" < 2 THEN [Price(RM)]+100
when "Age" > 2 AND "Age" <= 11 THEN [Price(RM)]+200
when "Age" > 11 AND "Age" <= 17 THEN [Price(RM)]+300
when "Age" > 17 AND "Age" <= 64 THEN [Price(RM)]+500
when "Age" >= 65 THEN [Price(RM)]+200
END AS Total_Price
From Reservation
3 ответа
Если вы хотите присвоить переменной результат выражения CASE
- используйте этот код:
DECLARE @totalprice int
SELECT
@totalprice = CASE
WHEN Age < 2 THEN [Price(RM)] + 100
WHEN Age > 2 AND Age <= 11 THEN [Price(RM)] + 200
WHEN Age > 11 AND Age <= 17 THEN [Price(RM)] + 300
WHEN Age > 17 AND Age <= 64 THEN [Price(RM)] + 500
WHEN Age >= 65 THEN [Price(RM)] + 200
END
FROM
Reservation
```
Если я вас понял, вы хотите указать результат своего запроса в параметре @totalprice. Вы можете добиться этого с помощью следующего запроса:
Declare @totalprice int
Select @totalprice=
Case
when "Age" < 2 THEN [Price(RM)]+100
when "Age" > 2 AND "Age" <= 11 THEN [Price(RM)]+200
when "Age" > 11 AND "Age" <= 17 THEN [Price(RM)]+300
when "Age" > 17 AND "Age" <= 64 THEN [Price(RM)]+500
when "Age" >= 65 THEN [Price(RM)]+200
END
From Reservation
Но независимо от того, сколько строк у вас в таблице, вы получите только значение последней записи.
Попробуйте это, плюс бонусное удаление ошибок!
declare @totalprice int
select @totalprice = [Price(RM)] + case
when Age < 2 then 100
when Age <= 11 then 200
when Age <= 17 then 300
when Age <= 64 then 500
else 200
end as Total_Price
from Reservation
Обратите внимание на упрощение за счет удаления повторяющегося [Price(RM)]
и удаления избыточных нижних границ диапазонов - when
оцениваются сверху вниз с использованием первого условия соответствия.
У вас есть ошибка: если значение равно 2
, ни одно из ваших условий when
не выполняется, поэтому результат будет null
. Этот рефакторинг также устраняет эту ошибку.
Похожие вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.