繁体   English   中英

在 sql 的 case 语句中设置多个变量值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM