如果相关表具有特定值,则排除完整记录

时间:2017-11-03 05:59:28

标签: sql sql-server crystal-reports

我有CLAIMMASTER这样的表

CLAIMNO
123
456
789

和另一个相关的表PROCSTATUS一样

CLAIMNO  PROCCODE
123       111
123       222
456       111
456       222
789       222

我想从table1中排除记录,其中table2中的proccode为111

结果应该是

CLAIMNO
789

我已经尝试了几乎所有的东西,但我得到的最接近的结果是这样的

CLAIMNO   PROCCODE
123       222
456       222
789       222

我知道这应该很简单,但我无法弄清楚要执行此操作的查询。 请帮忙。

这是查询

select a.CLAIMNO,b.PROCCODE from dbo.CLAIMMASTER a left join  
dbo.PROCSTATUS b on a.CLAIMNO = b.CLAIMNO
where a.CLAIMNO not in (select b.CLAIMNO where b.PROCCODE  in ('111'))

2 个答案:

答案 0 :(得分:1)

如果您只需要选择claimno,则无需加入。

select a.CLAIMNO from dbo.CLAIMMASTER a
where a.CLAIMNO not in 
(select distinct b.CLAIMNO from dbo.PROCSTATUS b where b.PROCCODE = '111') 

此外,如果您在claimmaster表中重复声明,则需要在select子句中使用distinct。

答案 1 :(得分:0)

select a.CLAIMNO
from dbo.CLAIMMASTER a 
inner join  dbo.PROCSTATUS b 
on a.CLAIMNO = b.CLAIMNO
where a.CLAIMNO not in 
(select CLAIMNO FROM dbo.PROCSTATUS  where PROCCODE  in ('111'))