2015-07-01 4 views
2

Этот синтаксис просто дает мне бесполезную ошибкуИспользование СЛУЧАЙ & COALESCE

Неправильный синтаксис около mentorname

Что я могу обновить, чтобы заставить это показать результаты?

SELECT COALESCE(case when 
      mentorname LIKE '%Med%' THEN 'MedTronics' end 
      mentorname LIKE '%Zi%' THEN 'Zinamice' end 
      , 'Total') As [Prov Source] 

От Database1

+0

Заменитель 'else' первый' end' следующий ' 'MedTroncis'' конец означает конец дела, но вы явно имеют другое. И добавьте 'когда' перед 2-м менторманом См. [Справка MSFT] (https://msdn.microsoft.com/en-us/library/ms181765.aspx) – xQbert

+0

@xQbert, который вызывает ошибку неправильного синтаксиса рядом с LIKE – user2676140

+4

1 x END за CASE –

ответ

5

Попробуйте это:

SELECT COALESCE(CASE 
        WHEN mentorname LIKE '%Med%' 
         THEN 'MedTronics' 
        WHEN mentorname LIKE '%Zi%' 
         THEN 'Zinamice' 
       END 
      , 'Total') As [Prov Source] 

Хотя можно упростить запрос и избавиться от COALESCE вообще и оставить только CASE:

SELECT 
    CASE 
     WHEN mentorname LIKE '%Med%' 
      THEN 'MedTronics' 
     WHEN mentorname LIKE '%Zi%' 
      THEN 'Zinamice' 
     ELSE 'Total' 
    END AS [Prov Source] 
1

Для держите это просто, вы можете сделать то же самое с вложенными CASE заявления и избежать COALESCE полностью ...

SELECT 
    [Prov Source] = 
     CASE WHEN mentorname LIKE '%Med%' THEN 
      'MedTronics' 
     ELSE 
      CASE WHEN mentorname LIKE '%Zi%' THEN 
       'Zinamice' 
      ELSE 
       'Total' 
      END 
     END 
+0

Вложения 'CASE' не нужны. –

+0

@RaduGheorghiu Необходим? Нет. Но он иллюстрирует правильную структуру операторов 'CASE' с данными, знакомыми с OP, и некорректно форматированные операторы CASE являются корнем его проблемы. – LDMJoe

Смежные вопросы