我有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'))
答案 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'))