从Subquery中的IF语句开始

时间:2014-04-09 05:07:33

标签: sql sql-server sql-server-2008 tsql

我需要使用if condition

在子查询中选择行
declare @VersionNo varchar(30)
Set @VersionNo = 'Hello'

选择(案例@VersionNo' Hello'然后(选择' 22',' 22')else(选择' 25', ' 22')结束)

但我收到此错误

  

Msg 156,Level 15,State 1,Line 4
  关键字' IF'附近的语法不正确。

     

Msg 156,Level 15,State 1,Line 4
  关键字'然后'。

附近的语法不正确      

Msg 156,Level 15,State 1,Line 5
  关键字' Else'附近的语法不正确。

     

Msg 102,Level 15,State 1,Line 5
  ')'附近的语法不正确。

有人可以帮我解决这个问题吗?

从答案中,我改变了我的查询,如

declare @VersionNo varchar(30)
    Set @VersionNo = 'Hello'
    select (case @VersionNo when 'Hello' then (Select '22','22') else (Select '25','22') end) 

现在我收到此错误

  

Msg 116,Level 16,State 1,Line 4
  当未使用EXISTS引入子查询时,只能在选择列表中指定一个表达式。

3 个答案:

答案 0 :(得分:2)

您需要使用CASE,不能在选择查询中使用IF

select case @VersionNo when 'Hello' 
    then 'Yes' 
    else 'No' 
end

或者,您可以根据变量的值运行不同的选择查询:

IF @VersionNo = 'Hello' 
    SELECT 'Yes'
ELSE
    SELECT 'No'

答案 1 :(得分:2)

使用CASE WHEN

declare @VersionNo varchar(30);
Set @VersionNo = 'Hello';

Select CASE WHEN @VersionNo='Hello' Then 'Yes' Else 'No' END AS SomeCol;

答案 2 :(得分:1)

检查一下:

DECLARE @VersionNo VARCHAR(30)
SET @VersionNo = 'Hello'
SELECT  CASE @VersionNo
          WHEN 'Hello' THEN '22'
          ELSE '25'
        END ,
        CASE @VersionNo
          WHEN 'Hello' THEN '22'
          ELSE '22'
        END