我有两个表stage和hier table 阶段表:
POL_NO AGENT COMPANY_CODE
100 001 01
101 002 01
102 003 01
103 004 01
餐桌:
PAY_REASON PAY_CODE AGENCY_CODE FINANCIAL_AGENT COMPANY_CODE AGENT
S BO - - 01 001
P - H 01 001
- - B - 01 001
S BO B 420 01 002
S BO - - 01 002
S BO - - 01 003
P DD U - 01 003
- - B - 01 003
- - B - 01 004
- - B - 01 004
- - - 420 01 004
阶段表将与基于(company_code和代理)的层次表进行比较,以查看层次表中是否满足以下条件:
1.(pay_reason='S'and pay_code='BO') or agency_code in ('B','H','U')
2.Financial agent!=420
如果hier表中的任何记录不符合条件,则company_code和agent将不会出现在预期结果中
预期结果:
POL_NO AGENT COMPANY_CODE
100 001 01
102 003 01
答案 0 :(得分:0)
您快到了:
Select *
From stage s
where not exists (
select *
from hier h
where s.AGENT = h.AGENT
And s.COMPANY_CODE = h.COMPANY_CODE
and not(((pay_reason='S'and pay_code='BO') or agency_code in ('B','H','U'))
and Financial_agent!=420))
答案 1 :(得分:0)
如果我正确理解条件,您似乎想要:
select *
from stage s
where not exists (select 1
from hier h
where s.agent = h.agent and
s.company_code = h.company_code and
h.Financial_agent = 420 and
not ( (h.pay_reason = 'S' and pay_code = 'BO') or
h.agency_code in ('B', 'H', 'U')
)
);