2015-07-01 74 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