【发布时间】:2016-05-13 06:22:09
【问题描述】:
在sql查询的where子句中使用case时它不起作用。
问题:
我有两个名为 TblEmployee 和 TblAssociate 的表。这两个表都包含公共列 PeriodId、EmpId 和 AssociateId。我的要求是从 应排除 TblAssociate 中的 EmpId 和 AssociateId 组合的 TblEmployee。排除应基于 PeriodId 条件。`
If(@PeriodID<50)
BEGIN
SELECT *
FROM TblEmployee
WHERE (EmpId+AssociateId) NOT IN (SELECT EmpId+AssociateId FROM TblAssociate)
END
ELSE
BEGIN
SELECT *
FROM TblEmployee
WHERE (EmpId) NOT IN (SELECT EmpId FROM TblAssociate)
END
上面的代码是有效的,但我需要避免 IF-ELSE 条件,我希望在 where 子句中使用“case when”。请帮助
【问题讨论】:
-
你为什么使用
+,而不是AND?这可能会导致错误的结果。
标签: sql-server database sql-server-2008