Как я выполняю различные операторы SELECT на основе СЛУЧАЯ

Я сталкиваюсь с проблемой в выполнении запросов с Оператором выбора. На основе моего условия, (для, например, длина), я хочу выполнить другой SQL-оператор.

Проблематичный демонстрационный запрос следующие:

select case 
    when char_length('19480821') = 8
        then select count(1) from Patient
    when char_length('19480821')=10
        then select count(1) from Doctor 
end

Исключение:

[Ошибка] строки Сценария: 1-5--------------------------
Неправильный синтаксис около ключевого слова 'выбор'.
Сообщение: 156, уровень: 15, состояние: 2
Сервер: sunsrv4z7, Строка: 2

Я не могу исправить синтаксис. Я получаю строку для char_length, как введено от пользователя. Как я могу запустить запросы на основе определенного условия? Действительно ли СЛУЧАЙ является правильным выбором? Или сделайте я должен использовать любую другую вещь.

5
задан Andreas Niedermair 8 October 2015 в 08:55
поделиться

2 ответа

Просто поместите открывающую и закрывающую скобки вокруг оператора select, чтобы решить вашу проблему

select 
    case when 
        char_length('19480821')=8 then 
            (select count(1) from Patient )
        when 
        char_length('19480821')=10 then 
            (select count(1) from Doctor )
      end
5
ответ дан 14 December 2019 в 04:29
поделиться
select 
  case when char_length('19480821')=8 then (select count(1) from Patient)
        when char_length('19480821')=10 then (select count(1) from Doctor)
    end

Проблема в том, что во вложенных операторах «Выбрать» отсутствуют открывающие и закрывающие скобки :)

2
ответ дан 14 December 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: