如何解决此SQL Server错误?

时间:2018-08-28 15:41:22

标签: sql sql-server

我的查询抛出错误

  

“ =”附近的语法不正确。

请告诉我我在哪里做错了。

case 
   when proj.country_name = 'UK' 
      then proj.region = 'NE'
   when proj.Country_Name = 'Belgium' or proj.Country_Name = 'Germany' or proj.Country_Name = 'Netherlands' 
      then proj.region = 'CE'
   when proj.Country_Name = 'Spain' or proj.Country_Name = 'France' or proj.Country_Name = 'Italy' 
      then proj.region = 'SE'
   else proj.region
end as Region_NCC,

谢谢

2 个答案:

答案 0 :(得分:4)

无效的语法case表达式不返回具有列名的值:

case when proj.country_name = 'UK' then 'NE'
     when proj.Country_Name in ('Belgium', 'Germany', 'Netherlands') then 'CE'
     when proj.Country_Name in ('Spain','France', 'Italy') then 'SE' 
     else proj.region
end as Region_NCC

我使用了IN子句,而不是奇怪的OR子句。

答案 1 :(得分:0)

在结构化时就是这种情况

   CASE expression
        WHEN condition1 THEN result1
        WHEN condition2 THEN result2
       ...
        WHEN conditionN THEN resultN
        ELSE result
      END  

对于您而言,您在then子句中确实犯了错误,那仅仅是then 'NE' 所以完整的条件会在下面

case when proj.country_name = 'UK' then  'NE'
      when proj.Country_Name = 'Belgium' 
      or proj.Country_Name = 'Germany' 
      or proj.Country_Name = 'Netherlands' 
     then  'CE'
     when proj.Country_Name = 'Spain' 
     or proj.Country_Name = 'France' 
     or proj.Country_Name = 'Italy' 
    then  'SE'
     else proj.region
     end as Region_NCC