SQL Server 2000, как сформировать регистр в регистре? - PullRequest
1 голос
/ 03 мая 2011

Можно ли иметь оператор case в операторе case когда true, тогда?

case when true then 
   case when false then 'test0'
   else 'test1'
   end
else
    case when false then 'test2'
    else 'test3'
    end
end

Обратите внимание, куда помещать операторы end?

Ответы [ 3 ]

4 голосов
/ 03 мая 2011

Абсолютно. Выражение Case не знает, что оно встроено в другое выражение Case. Каждому выражению Case требуется ключевое слово End:

Select Case
        When Foo = Bar Then 'Test0'
        Else Case
                When Gamma = Theta Then 'Test1'
                End
        End

Другой способ - просто сложить выражения

Select Case
        When Foo = Bar Then 'Test0'
        When Gamma = Theta Then 'Test1'
        Else 'Blah'
        End

При такой укладке выражения выполняются в том порядке, в котором они записаны, пока единица Когда выражение не становится истинным (т. Е. Вы получаете одно из выражений Тогда).

1 голос
/ 03 мая 2011

Ваш код выглядит хорошо, как есть.хорошо, чтобы конец конца был рядом друг с другом, поскольку интерпретатор понимает вложение.

1 голос
/ 03 мая 2011

Может быть полезно использовать скобки или отступы (или оба), поэтому очевидно, что case соответствует какому end.

case when true then 
  (  case when false then 'test0'
     else 'test1'
     end
  ) 
else
  ( case when false then 'test2'
    else 'test3'
    end
  )
end
...