Member 11922912 Ответов: 2

Возможно есть инструкция case в операторе Case


Можно ли заявление в случае, когда в операторе Case. Довольно сложный вопрос. Но это так же просто, как иметь оператор case в предложении when оператора case.
Цитата:
Выражение небулевского типа, заданное в контексте, где ожидается условие


Я не совсем уверен, что то, что я сделал до сих пор, сработает ... но я не хочу, чтобы это сработало таким образом.

Что я уже пробовал:

(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)

2 Ответов

Рейтинг:
2

#realJSOP

Да, вы можете использовать вложенные операторы case, но это становится очень уродливым очень быстро. Попробовать это:

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


Richard Deeming

Я не думаю, что это сработает - вы получите ту же самую "не-булеву" ошибку, что и код в вопросе. :)

#realJSOP

Ну, у него были какие-то неуместные скобки. У меня нет набора данных, в который я мог бы бросить это дело, так что все равно это предположение, пока кто-нибудь не прогонит его и не увидит...

Рейтинг:
0

Richard Deeming

Попробуйте что-нибудь вроде этого:

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


#realJSOP

Я вернулся, чтобы отправить именно это... :)