我有两个桌子阶段和较高的表格舞台表:
POL_NO AGENT COMPANY_CODE
100 001 01
101 002 01
102 003 01
103 004 01
hier表:
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 and Agent)的较高表进行比较,以查看是否在HIER表中满足以下条件:
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
你快到了:
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))
如果我正确理解条件,您似乎想要:
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')
)
);