TSQL中CASE子句内的SELECT语句抛出错误

Dee*_*ons 1 sql t-sql sql-server sql-server-2005 case

我不得不对一堆存储过程进行微调,并得到一个存储过程中有一些存储过程的IF ELSE blocks插入语句.因此,我使用case建模他们发现我得到语法错误尝试下面的语句(一个简单的例子,正在做什么)但确定你会得到这个想法

DECLARE @rowcount int
SELECT @rowcount = -1
 CASE WHEN @rowcount = -1 THEN
    select 'I WON THE RACE'
 WHEN '2' 
    SELECT 'WHAT A LOSER'
 END
Run Code Online (Sandbox Code Playgroud)

每个案例都有不止一个陈述,所以我只是将它们包含在内部(,)但是要进入noavail.请更正我对TSQL案例的了解.(如果有帮助,使用SQl Server 2005)

Ada*_*ger 8

您希望您的CASE语句如下所示:

DECLARE @rowcount int
SELECT @rowcount = -1;
SELECT CASE @rowcount
          WHEN -1 THEN 'I WON THE RACE'
          WHEN 2 THEN 'I did not win'
       END AS columnName
Run Code Online (Sandbox Code Playgroud)

CASE一个内部云SELECT声明.然后你只需看看你的价值@rowCount,并采取适当的行动.您可能想要阅读有关CASE语句的更多信息

CASE声明的第二种形式如下:

SELECT CASE 
   WHEN @rowcount IS NULL THEN 'Null case here'
   WHEN @rowcount = -1 THEN 'I WON THE RACE'
   WHEN @rowcount = 2 THEN 'I did not win'
END AS columnName
Run Code Online (Sandbox Code Playgroud)

如果要将CASE与INSERT一起使用:

DECLARE @rowcount int
SELECT @rowcount = -1;

INSERT INTO myTable(column1, column2, column3)
SELECT CASE @rowcount
          WHEN -1 THEN 'I WON THE RACE'
          WHEN 2 THEN 'I did not win'
       END AS column1
   , t.column2
   , CASE
        WHEN t.someColumn < someValue THEN 'thirdColumnValue'
        ELSE 'someColumn is greater than specified value'
     END AS column3
FROM secondTable AS t
Run Code Online (Sandbox Code Playgroud)