如何选择记录所有条件是否满足SQL



我有两个桌子阶段和较高的表格舞台表:

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')                    
                            )
                 );

相关内容

最新更新