SQL如何筛选具有一个值但不具有另一个值的列

SQL如何筛选具有一个值但不具有另一个值的列,sql,Sql,我想编写一个能够查看表中两列的查询,下面是一个示例: 表名“工资单” 对于该表,第一列是检查编号,一个检查编号可以有多个控制代码。我希望查询查看“控制代码”列,如果“控制代码”PTS存在,但EAR 1012不存在,则查找一个检查编号,然后给我检查编号 在本例中,答案应为78910 请帮忙 以下是我尝试过的查询: Select [Check_No] from [Payroll] Where [Control_Code]<>'EAR 1012' And [Control Code]='P

我想编写一个能够查看表中两列的查询,下面是一个示例:

表名“工资单”

对于该表,第一列是检查编号,一个检查编号可以有多个控制代码。我希望查询查看“控制代码”列,如果“控制代码”PTS存在,但EAR 1012不存在,则查找一个检查编号,然后给我检查编号

在本例中,答案应为78910

请帮忙

以下是我尝试过的查询:

Select [Check_No]
from [Payroll]
Where [Control_Code]<>'EAR 1012'
And [Control Code]='PTS'
Order by [Check_No]

您可以使用
不存在

select p.*
from payroll p
where p.control_code = 'PTS' and
      not exists (select 1
                  from payroll p2
                  where p2.Check_No = p.Check_No and
                        p2.control_code = 'EAR 1012'
                 );
Select [Check_No]
into #temp
from [payroll]
Where [Control_Code]='EAR 1012'

Select [Check_No]
from [payroll]
where [Check_No] not in 
(Select [Check_No] from #temp)
select p.*
from payroll p
where p.control_code = 'PTS' and
      not exists (select 1
                  from payroll p2
                  where p2.Check_No = p.Check_No and
                        p2.control_code = 'EAR 1012'
                 );