2015-07-01 41 views
2

这句法只是给了我用例和COALESCE

不正确的语法附近mentorname无益的错误

我怎么更新,迫使它来显示结果?

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

从数据库1

+0

替代'else'对后的第一个''end'“MedTroncis''结束意味着案件的终结,而是你显然有别的。并添加'when'第二mentorname之前,请参阅[MSFT求助](https://msdn.microsoft.com/en-us/library/ms181765.aspx) – xQbert

+0

@xQbert产生不正确的语法错误附近LIKE – user2676140

+4

1个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

要保持这个简单,你可以用嵌套完成同样的事情点声明和避免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