我正在尝试使用SQL从数据库中提取报告。我的所有员工都有多个扣除代码,我想忽略任何具有一定扣除额的员工的扣除额。也就是说,我只想吸引那些没有33的员工。当然,我可以提取所有不是33的员工,但我可以获得33岁的员工的其他扣除。
WHERE(((Viewpoint.dbo.PREH.Employee NOT IN(选择Viewpoint.dbo.PREH.Employee,其中Viewpoint.dbo.PRDT.EDLCode = 33))
答案 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模式。