如何使用参数sql时的情况

时间:2016-03-14 08:40:33

标签: sql sql-server

我有一个案例,当我的商店程序中的陈述显示在下面

select distinct case 
                  when e.emp_type = '' or e.emp_type is null then 'A' 
                  when @emp_type = 'A' Then e.emp_type = 'A' 
                  else e.emp_type
                end as emp_type
from t_gc_emp e 

假设emp_type是员工的类型,如兼职,全职,合同等。我不知道我在这里做错了什么,但当我尝试执行商店程序时,它说

  

'='附近的语法不正确。

3 个答案:

答案 0 :(得分:1)

我认为您的问题出现在您的第二时,即它应该是@emp_type = 'A' Then 'A'而不是when @emp_type = 'A' Then e.emp_type = 'A'

您可以尝试运行以下

SELECT DISTINCT  
            case when e.emp_type = '' or e.emp_type IS NULL then 'A' 
                 when @emp_type = 'A' Then 'A' 
                 else e.emp_type end   as emp_type

FROM t_gc_emp e

答案 1 :(得分:1)

您无法将字段值分配给case表达式中的任何内容,但您可以通过select输出:

when @emp_type = 'A' then 'A' 

甚至更好:

select distinct case 
                  when e.emp_type = '' or e.emp_type is null or @emp_type = 'A' then 'A'  
                  else e.emp_type
                end   as emp_type
from t_gc_emp e 

答案 2 :(得分:1)

你的第二个THEN中有语法错误 - >那么e.emp_type =' A'

 SELECT DISTINCT  
        case when e.emp_type = '' or e.emp_type IS NULL then 'A'  
             when @emp_type = 'A'  then 'A'
             else e.emp_type
       end   as emp_type
  FROM t_gc_emp e 
BTW - 如果它看起来像这样,为什么另一个呢?将它结合在第一个WHEN

 SELECT DISTINCT  
        case when @emp_type = 'A' or e.emp_type = '' or e.emp_type IS NULL then 'A' 
             else e.emp_type
       end   as emp_type
  FROM t_gc_emp e