[英]Set more than one variable value in case statement in sql
declare @Month int
declare @A int
Declare @B int
Set @Month = 1
SELECT
CASE
WHEN @Month=1 THEN @A=11,@B=21
WHEN @Month=2 THEN @A=111,@B=211
ELSE @A=11,@B=13 END
我想根据SQL
中的条件设置多个变量。 怎么做。我这样做时出错。
您的CASE
表达式可能像
SELECT @A = CASE @Month WHEN 1 THEN 11
WHEN 2 THEN 111
ELSE 11 END,
@B= CASE @Month WHEN 1 THEN 21
WHEN 2 THEN 211
ELSE 13 END
您可以使用T-SQL 的 IF 语句:
IF @Month = 1
SET @A=11, @B=21
ELSE IF @Month = 2
SET @A=111, @B=211
ELSE
SET @A=11, @B=13
或者通常首选的显式 scope:
IF @Month = 1
BEGIN
SET @A=11, @B=21
END
ELSE IF @Month = 2
BEGIN
SET @A=111, @B=211
END
ELSE
BEGIN
SET @A=11, @B=13
END
您可以使用派生表:
select @a = coalesce(max(a), 11),
@b = coalesce(max(b), 13)
from (values (1, 11, 21),
(2, 111, 211)
) v(month, a, b)
where month = @month;
我建议这样做是因为在values()
语句中列出值似乎是列出所有值的一种简洁方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.