Microsoft SQL Server:如何从第一个查询中过滤出第二个查询的结果

时间:2021-06-18 20:21:10

标签: sql sql-server

假设我有如下所示的数据:

Data example

我有一些已停用的记录和一些活跃的记录。问题是我的一些记录同时包含已停用和活动的行。我只想要没有活动行的记录。

所以在这个例子中,尽管 Greg 有 2 个退休的行。他的一排处于活动状态的事实将使他失去资格。另一方面,汤米只有 1 行并且已退休。他没有活动行。

查询将只返回 Tommy。

2 个答案:

答案 0 :(得分:1)

根据您的定义,员工的只能按姓名定义。然后你可以使用 EXISTS。即:

select * from myTable t1
where Status = 'RETIRED' and 
     not exists (
   select * from myTable t2 
   where t1.EmployeeName = t2.employeeName and t2.Status = 'ACTIVE');

答案 1 :(得分:0)

SELECT * FROM myTable 
WHERE Status = 'RETIRED'
AND [Employee Name] NOT IN -- Assumes that Employee Name is a unique key
(
SELECT [Employee Name] FROM myTable 
WHERE Status = 'ACTIVE'
)