是否有可能在case语句中包含case语句 [英] Is it possible have case statement inside a case statement

查看:70
本文介绍了是否有可能在case语句中包含case语句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以在when in case语句中包含case语句。有点棘手的问题。但它就像在case语句的when子句上有一个case语句一样简单。

Quote:

在预期条件的上下文中指定的非布尔类型的表达式





我不确定我到目前为止所做的事情是否会奏效......但我不是那样工作的。



我尝试过的事情:



(情况@variable = 1那么(例如情况)(tbl_column_id时的情况) IN(SELECT tbl_column_id FROM Table THEN 1 END))AND(CASE WHEN othr_tbl_column_id NOT IN(SELECT othr_tbl_column_id FROM OtherTable THEN 0 END))THEN 1 ELSE 0 END)
END)

解决方案

是的,您可以使用嵌套的case语句,但它真正快速实现丑陋。试试这个:



  CASE   WHEN   @ variable  =  1  
那么 CASE WHEN CASE WHEN tbl_column_id IN SELECT tbl_column_id FROM
那么 1
ELSE 0
END
AND CASE WHEN othr_tbl_column_id NOT IN SELECT othr_tbl_column_id FROM OtherTable)
那么 0
ELSE 1
END
ELSE 0 END


尝试这样的事情:

  CASE  
WHEN @ variable = 1 那么 CASE
<温泉n class =code-keyword> WHEN tbl_column_id IN SELECT tbl_column_id FROM AND othr_tbl_column_id IN SELECT othr_tbl_column_id FROM OtherTable)那么 1
ELSE 0
END
END


Is it possible to have a case statement inside a when in case statement. Kinda tricky question. But it is as simple as having a case statement on the when clause of a case statement.

Quote:

An expression of non-boolean type specified in a context where a condition is expected



Am not really sure if what I've done so far will work.. but I wan't that to work that way.

What I have tried:

(CASE WHEN @variable = 1 THEN (CASE WHEN (CASE WHEN tbl_column_id IN(SELECT tbl_column_id FROM Table THEN 1 END)) AND (CASE WHEN othr_tbl_column_id NOT IN(SELECT othr_tbl_column_id FROM OtherTable THEN 0 END)) THEN 1 ELSE 0 END)
END)

解决方案

Yes, you can use nested case statements, but it gets real ugly real fast. Try this:

CASE WHEN @variable = 1 
     THEN (CASE WHEN CASE WHEN tbl_column_id IN(SELECT tbl_column_id FROM Table) 
                          THEN 1 
                          ELSE 0 
                          END
                     AND CASE WHEN othr_tbl_column_id NOT IN(SELECT othr_tbl_column_id FROM OtherTable) 
                              THEN 0 
                              ELSE 1 
                              END 
      ELSE 0 END


Try something like this:

CASE 
    WHEN @variable = 1 THEN CASE 
        WHEN tbl_column_id IN (SELECT tbl_column_id FROM Table) AND othr_tbl_column_id IN (SELECT othr_tbl_column_id FROM OtherTable) THEN 1 
        ELSE 0 
    END
END


这篇关于是否有可能在case语句中包含case语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆