左连接结果根据参数值

时间:2018-03-15 13:24:11

标签: sql-server database

在我的存储过程中,我试图根据参数获取查询结果。我有一个主表“employee”和表“employee_process”,我把它与第一个表连接起来。 在结果中,如果参数的值为0,我希望从“employee”获取除了与“employee_process”连接的行之外的所有内容,如果值为1,我只想获取两个表之间连接的行。这就是我现在所拥有的:

WHERE ( @state ^ ep.employee_id IS NOT NULL )

如何实现我尝试使用类似的东西:

{{1}}

但没有运气。

提前谢谢

1 个答案:

答案 0 :(得分:4)

按如下方式重新定义CASE表达式:

SELECT *
FROM employee e
LEFT JOIN employee_process ep
    ON ep.employee_id = e.employee_id
WHERE
    @state = 0 OR ep.employee_id IS NOT NULL;

CASE表达式必须生成实际值,而不是其他表达式。但是,我们甚至不需要使用CASE表达式。

修改

根据您的评论,似乎我们应该为WHERE子句添加另一个标准:

WHERE
    (@state = 0 AND ep.status <> 'employee_process') OR ep.employee_id IS NOT NULL;