我有一个案例,当我的商店程序中的陈述显示在下面
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是员工的类型,如兼职,全职,合同等。我不知道我在这里做错了什么,但当我尝试执行商店程序时,它说
'='附近的语法不正确。
答案 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