Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL中使用case子句_Sql_Select - Fatal编程技术网

在SQL中使用case子句

在SQL中使用case子句,sql,select,Sql,Select,我在sql中遇到以下逻辑,假设我的每个员工都有一个员工类型,例如“E”=员工,“N”=非员工,“S”=挂起。在我的单选按钮中,我有这三种状态,还有一个all单选按钮,用户可以在其中显示所有三种员工类型。为了显示这些相应的数据,我使用了一个存储过程。我在下面有这些代码,但不知何故它不起作用,我设法显示“E”、“N”和“S”员工类型,但当我选择“A”时,它只显示员工类型,在列中它是null或empty,但我想要的是显示所有员工类型。下面是我的代码:(我想要的是当我选择all时显示所有三个包含的空类型

我在sql中遇到以下逻辑,假设我的每个员工都有一个员工类型,例如“E”=员工,“N”=非员工,“S”=挂起。在我的单选按钮中,我有这三种状态,还有一个all单选按钮,用户可以在其中显示所有三种员工类型。为了显示这些相应的数据,我使用了一个存储过程。我在下面有这些代码,但不知何故它不起作用,我设法显示“E”、“N”和“S”员工类型,但当我选择“A”时,它只显示员工类型,在列中它是
null
empty
,但我想要的是显示所有员工类型。下面是我的代码:(我想要的是当我选择all时显示所有三个包含的空类型)


where
子句将返回的行限制为具有
@emp\u type=e.emp\u type
的行-要在
@emp\u type
作为
'A'
传递时返回所有行,需要将其添加到条件中:

SELECT CASE WHEN e.emp_type IS NULL OR 
                 e.emp_type = '' OR
                 @emp_type = 'A' 
            THEN 'A' 
            ELSE e.emp_type END AS emp_type  
FROM   t_gc_emp e  
WHERE  @emp_type = 'A' OR @emp_type = e.emp_type
或者,更优雅地说,在操作符中使用

SELECT CASE WHEN e.emp_type IS NULL OR 
                 e.emp_type = '' OR
                 @emp_type = 'A' 
            THEN 'A' 
            ELSE e.emp_type END AS emp_type  
FROM   t_gc_emp e  
WHERE  @emp_type IN ('A', e.emp_type)

尝试将where条件更改为this
where@emp\u type=e.emp\u type或@emp\u type='A'
干得好,谢谢您的帮助。:)我的评论很好。
SELECT CASE WHEN e.emp_type IS NULL OR 
                 e.emp_type = '' OR
                 @emp_type = 'A' 
            THEN 'A' 
            ELSE e.emp_type END AS emp_type  
FROM   t_gc_emp e  
WHERE  @emp_type IN ('A', e.emp_type)