使用SQL忽略所有员工而没有特定的扣减代码

时间:2016-01-07 15:27:31

标签: sql

我正在尝试使用SQL从数据库中提取报告。我的所有员工都有多个扣除代码,我想忽略任何具有一定扣除额的员工的扣除额。也就是说,我只想吸引那些没有33的员工。当然,我可以提取所有不是33的员工,但我可以获得33岁的员工的其他扣除。

WHERE(((Viewpoint.dbo.PREH.Employee NOT IN(选择Viewpoint.dbo.PREH.Employee,其中Viewpoint.dbo.PRDT.EDLCode = 33))

1 个答案:

答案 0 :(得分:1)

以下是排除扣除33的员工的一般方法。

WHERE empId NOT IN (SELECT empId from myTable WHERE deductionId = 33)

这种方法排除任何有扣减的员工的员工标识符33.当然,由于您还没有发布您的SQL,因此需要修改此方法以适合您的特定情况。

<强>更新

根据问题中添加的新信息,这里有一个更具体的答案:

WHERE Viewpoint.dbo.PREH.Employee NOT IN (SELECT prdt.Employee FROM Viewpoint.dbo.PRDT prdt WHERE prdt.EDLCode = 33)
AND Viewpoint.dbo.PRDT.PREndDate &SPARM01 --what is this?  are you missing an equals sign?
AND Viewpoint.dbo.PREH.ActiveYN ='Y' 
AND Viewpoint.dbo.PRDT.PRCo ='1' 
ORDER BY Viewpoint.dbo.PREH.LastName, Viewpoint.dbo.PREH.FirstName

注意

  • NOT IN后面的内容是subquery,因此需要遵循基本的SELECT FROM WHERE模式。
  • 因为你的WHERE子句中只有AND条件(没有OR条件),所以不需要包含所有这些括号。您只需要子查询周围的括号。
  • 我已经在你的WHERE条件的一部分添加了评论,似乎缺少一个等号。