使用 case when variable 时 '<' 附近的无效语法错误,在没有变量的情况下工作正常
Invalid syntax error near '<' when using case when variable, works fine without variable
我正在尝试解决这个 SQL 我的代码抛出错误的问题
Invalid syntax error near '<'
当我使用变量 @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
试试这个,加上额外的 bug 移除!
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
条件中的 none 已满足,因此结果将为 null
。此重构也解决了此错误。
如果我没看错,那么您想将查询结果设置到@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
但是无论 table 中有多少行,您都只会获得最后一条记录的值。
如果您想将 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
```
我正在尝试解决这个 SQL 我的代码抛出错误的问题
Invalid syntax error near '<'
当我使用变量 @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
试试这个,加上额外的 bug 移除!
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
条件中的 none 已满足,因此结果将为 null
。此重构也解决了此错误。
如果我没看错,那么您想将查询结果设置到@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
但是无论 table 中有多少行,您都只会获得最后一条记录的值。
如果您想将 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
```