Adding
This commit is contained in:
+184
@@ -0,0 +1,184 @@
|
||||
With CTE_ActiveAccounts As
|
||||
(
|
||||
Select PE.persnbr
|
||||
,ar.AcctNbr As "OldestRoleActiveAccount"
|
||||
,ar.EFFDATETIME As "OldestRoleActiveDate"
|
||||
,at.ACCTNBR As "OldestTaxActiveAccount"
|
||||
,at.EFFDATETIME As "OldestTaxAccountDate"
|
||||
from pers PE
|
||||
left join
|
||||
(
|
||||
Select A.AcctNbr, ASH.EffDateTime, A.taxrptforpersnbr, row_number() over (partition by A.taxrptforpersnbr order by ASH.EffDateTime asc) rowTaxActive
|
||||
from ACCT A Inner Join ACCTACCTSTATHIST ASH ON A.ACCTNBR = ASH.ACCTNBR
|
||||
Where A.MJACCTTYPCD NOT IN ('EXT', 'RR', 'GL', 'RTMT')
|
||||
And A.CURRMIACCTTYPCD NOT IN ('BAT', 'CASH', 'CLRA', 'DLR', 'GL','SDB')
|
||||
AND NOT EXISTS (select null from ACCTACCTSTATHIST OTA Where OTA.Acctstatcd IN ('CLS', 'CO') and OTA.ACCTNBR = A.Acctnbr)
|
||||
And A.CURRACCTSTATCD NOT IN ('CLS', 'CWB', 'CO')
|
||||
And ASH.ACCTSTATCD IN ('ACT','DORM','IACT')
|
||||
) at on at.taxrptforpersnbr = PE.persnbr And rowTaxActive = 1
|
||||
|
||||
left join
|
||||
(
|
||||
Select AC.AcctNbr, ASH.EffDateTime, ARP.persnbr, row_number() over (partition by ARP.persnbr order by ASH.EffDateTime asc) rowRoleActive
|
||||
from ACCTACCTROLEPERS ARP Join ACCT AC on AC.acctnbr = ARP.acctnbr
|
||||
Join ACCTACCTSTATHIST ASH ON ASH.ACCTNBR = ARP.ACCTNBR
|
||||
Where AC.MJACCTTYPCD NOT IN ('EXT', 'RR', 'GL', 'RTMT')
|
||||
And AC.CURRMIACCTTYPCD NOT IN ('BAT', 'CASH', 'CLRA', 'DLR', 'GL','SDB')
|
||||
AND NOT EXISTS (select null from ACCTACCTSTATHIST ORA Where ORA.Acctstatcd IN ('CLS', 'CO') and ORA.ACCTNBR = AC.Acctnbr)
|
||||
And AC.CURRACCTSTATCD NOT IN ('CLS', 'CWB', 'CO')
|
||||
And ASH.ACCTSTATCD IN ('ACT','DORM','IACT')
|
||||
And ARP.ACCTROLECD IN ('OWN','SIGN','POA')
|
||||
) ar on PE.persnbr = ar.persnbr And rowRoleActive = 1
|
||||
),
|
||||
|
||||
CTE_ActiveClosedAccounts As
|
||||
(
|
||||
|
||||
Select PE.persnbr as "PersonNumber",
|
||||
PUF.Value as "ValueSet",
|
||||
PUF.DateLastMaint,
|
||||
PUF.valueLastUpdatedDate
|
||||
,Case
|
||||
When PUF.valueLastUpdatedDate IS NOT NULL Then 1 Else 0 End As "UserFieldExists"
|
||||
,Case
|
||||
When (ract.AcctNbr IS NOT NULL and aac."OldestTaxActiveAccount" IS NULL) Then ract.EffDateTime
|
||||
When (racr.AcctNbr IS NOT NULL and aac."OldestRoleActiveAccount" IS NULL) Then racr.EffDateTime
|
||||
When (cto.AcctNbr IS NOT NULL and aac."OldestTaxActiveAccount" IS NULL) Then cto.EffDateTime
|
||||
When (cro.AcctNbr IS NOT NULL and aac."OldestRoleActiveAccount" IS NULL) Then cro.EffDateTime
|
||||
When (aac."OldestRoleActiveDate" IS NULL or aac."OldestTaxAccountDate" IS NULL) Then
|
||||
COALESCE(aac."OldestRoleActiveDate", aac."OldestTaxAccountDate") Else
|
||||
LEAST(aac."OldestRoleActiveDate", aac."OldestTaxAccountDate")
|
||||
End As "OldestActiveEffectiveDate"
|
||||
|
||||
,Case
|
||||
When (ct.AcctNbr = ctad.AcctNbr or cr.AcctNbr = crad.AcctNbr) Then Null
|
||||
When (ct.EffDateTime IS NULL or cr.EffDateTime IS NULL) Then
|
||||
COALESCE(ct.EffDateTime, cr.EffDateTime) Else
|
||||
GREATEST(ct.EffDateTime, cr.EffDateTime)
|
||||
End As "RecentClosedEffectiveDate"
|
||||
from pers PE
|
||||
left join CTE_ActiveAccounts aac on aac.PersNbr = PE.persnbr
|
||||
left join
|
||||
(
|
||||
Select A.AcctNbr, ASH.EffDateTime, A.taxrptforpersnbr, row_number() over (partition by A.taxrptforpersnbr order by ASH.EffDateTime desc) rowTaxClosed
|
||||
from ACCT A Inner Join ACCTACCTSTATHIST ASH ON A.ACCTNBR = ASH.ACCTNBR
|
||||
Where A.MJACCTTYPCD NOT IN ('EXT', 'RR', 'GL', 'RTMT')
|
||||
And A.CURRMIACCTTYPCD NOT IN ('BAT', 'CASH', 'CLRA', 'DLR', 'GL','SDB')
|
||||
AND EXISTS (select null from ACCTACCTSTATHIST OTA Where OTA.Acctstatcd IN ('ACT', 'IACT', 'DORM') and OTA.ACCTNBR = A.Acctnbr)
|
||||
And A.CURRACCTSTATCD IN ('CLS', 'CWB')
|
||||
) ct on ct.taxrptforpersnbr = PE.persnbr and rowTaxClosed = 1 and ct.EffDateTime > sysdate - 30 --check if the mostrecentcloseddate account number is less than 30 days old
|
||||
|
||||
left join
|
||||
(
|
||||
Select AC.AcctNbr, ASH.EffDateTime, arp.persnbr, row_number() over (partition by ARP.persnbr order by ASH.EffDateTime desc) rowRoleClosed
|
||||
from ACCTACCTROLEPERS ARP Join ACCT AC on AC.acctnbr = ARP.acctnbr
|
||||
Join ACCTACCTSTATHIST ASH ON ASH.ACCTNBR = ARP.ACCTNBR
|
||||
Where AC.MJACCTTYPCD NOT IN ('EXT', 'RR', 'GL', 'RTMT')
|
||||
And AC.CURRMIACCTTYPCD NOT IN ('BAT', 'CASH', 'CLRA', 'DLR', 'GL','SDB')
|
||||
AND EXISTS (select null from ACCTACCTSTATHIST ORA Where ORA.Acctstatcd IN ('ACT', 'IACT', 'DORM') and ORA.ACCTNBR = AC.Acctnbr )
|
||||
And AC.CURRACCTSTATCD IN ('CLS', 'CWB') and ARP.ACCTROLECD IN ('OWN','SIGN','POA')
|
||||
) cr on PE.persnbr = cr.persnbr and rowRoleClosed = 1 and cr.EffDateTime > sysdate - 30 --check if the mostrecentcloseddate account number is less than 30 days old
|
||||
|
||||
left join
|
||||
(
|
||||
Select A.AcctNbr, ASH.EffDateTime, A.taxrptforpersnbr, row_number() over (partition by A.taxrptforpersnbr order by ASH.EffDateTime desc) rowTaxClosedOldReactivated
|
||||
from ACCT A Inner Join ACCTACCTSTATHIST ASH ON A.ACCTNBR = ASH.ACCTNBR
|
||||
Where A.MJACCTTYPCD NOT IN ('EXT', 'RR', 'GL', 'RTMT')
|
||||
And A.CURRMIACCTTYPCD NOT IN ('BAT', 'CASH', 'CLRA', 'DLR', 'GL','SDB')
|
||||
AND EXISTS (select null from ACCTACCTSTATHIST CRA Where CRA.Acctstatcd IN ('CLS', 'CWB') and CRA.ACCTNBR = A.Acctnbr and CRA.EffDateTime < sysdate - 30)
|
||||
And A.CURRACCTSTATCD IN ('ACT', 'IACT', 'DORM')
|
||||
) cto on cto.taxrptforpersnbr = PE.persnbr and rowTaxClosedOldReactivated = 1 and cto.EffDateTime > sysdate - 30 --check to see if account was reopened after being closed more than 30 days
|
||||
|
||||
left join
|
||||
(
|
||||
Select AC.AcctNbr, ASH.EffDateTime, arp.persnbr, row_number() over (partition by ARP.persnbr order by ASH.EffDateTime desc) rowRoleClosedOldReactivated
|
||||
from ACCTACCTROLEPERS ARP Join ACCT AC on AC.acctnbr = ARP.acctnbr
|
||||
Join ACCTACCTSTATHIST ASH ON ASH.ACCTNBR = ARP.ACCTNBR
|
||||
Where AC.MJACCTTYPCD NOT IN ('EXT', 'RR', 'GL', 'RTMT')
|
||||
And AC.CURRMIACCTTYPCD NOT IN ('BAT', 'CASH', 'CLRA', 'DLR', 'GL','SDB')
|
||||
AND EXISTS (select null from ACCTACCTSTATHIST CRRA Where CRRA.Acctstatcd IN ('CLS', 'CWB') and CRRA.ACCTNBR = AC.Acctnbr and CRRA.EffDateTime < sysdate - 30)
|
||||
And AC.CURRACCTSTATCD IN ('ACT', 'DORM', 'IACT')
|
||||
And ARP.ACCTROLECD IN ('OWN','SIGN','POA')
|
||||
) cro on PE.persnbr = cro.persnbr and rowRoleClosedOldReactivated = 1 and cro.EffDateTime > sysdate - 30 --check to see if account was reopened after being closed more than 30 days
|
||||
|
||||
left join
|
||||
(
|
||||
Select A.AcctNbr, ASH.EffDateTime, A.taxrptforpersnbr, A.CURRACCTSTATCD from ACCT A Inner Join ACCTACCTSTATHIST ASH ON A.ACCTNBR = ASH.ACCTNBR
|
||||
Where A.MJACCTTYPCD NOT IN ('EXT', 'RR', 'GL', 'RTMT')
|
||||
And A.CURRMIACCTTYPCD NOT IN ('BAT', 'CASH', 'CLRA', 'DLR', 'GL','SDB')
|
||||
And (ASH.ACCTSTATCD = 'ACT' Or ASH.ACCTSTATCD = 'DORM' Or ASH.ACCTSTATCD = 'IACT')) ctad on Pe.Persnbr = ctad.taxrptforpersnbr
|
||||
And ct.AcctNbr = ctad.AcctNbr
|
||||
And ctad.EffDateTime > sysdate - 30 --check if mostrecentclosed date has opened in last 30 days
|
||||
|
||||
left join
|
||||
(
|
||||
Select A.AcctNbr, ASH.EffDateTime, A.taxrptforpersnbr, row_number() over (partition by A.taxrptforpersnbr order by ASH.EffDateTime asc) rowTaxClosedNewReactivated
|
||||
from ACCT A Inner Join ACCTACCTSTATHIST ASH ON A.ACCTNBR = ASH.ACCTNBR
|
||||
Where A.MJACCTTYPCD NOT IN ('EXT', 'RR', 'GL', 'RTMT')
|
||||
And A.CURRMIACCTTYPCD NOT IN ('BAT', 'CASH', 'CLRA', 'DLR', 'GL','SDB')
|
||||
AND EXISTS (select null from ACCTACCTSTATHIST CRA Where CRA.Acctstatcd IN ('CLS', 'CWB') and CRA.ACCTNBR = A.Acctnbr and CRA.EffDateTime > sysdate - 30)
|
||||
AND EXISTS (select null from ACCTACCTSTATHIST CRA Where CRA.Acctstatcd IN ('ACT', 'IACT', 'DORM') and CRA.ACCTNBR = A.Acctnbr and CRA.EffDateTime > sysdate - 30)
|
||||
And A.CURRACCTSTATCD IN ('ACT', 'IACT', 'DORM')
|
||||
) ract on ract.taxrptforpersnbr = PE.persnbr and rowTaxClosedNewReactivated = 1 and ract.EffDateTime < sysdate - 30
|
||||
--check if most recent reactivated tax account has closed and reopened in last 30 days take the oldest active date before that
|
||||
|
||||
left join
|
||||
(
|
||||
Select AC.AcctNbr, ASH.EffDateTime, ARP.persnbr from ACCTACCTROLEPERS ARP Inner Join ACCT AC on AC.acctnbr = ARP.acctnbr
|
||||
Inner Join ACCTACCTSTATHIST ASH ON ASH.ACCTNBR = ARP.ACCTNBR
|
||||
Where AC.MJACCTTYPCD NOT IN ('EXT', 'RR', 'GL', 'RTMT')
|
||||
And AC.CURRMIACCTTYPCD NOT IN ('BAT', 'CASH', 'CLRA', 'DLR', 'GL','SDB')
|
||||
And ASH.ACCTSTATCD IN ('ACT','DORM','IACT')
|
||||
And ARP.ACCTROLECD IN ('OWN','SIGN','POA')) crad on Pe.Persnbr = crad.persnbr
|
||||
And cr.AcctNbr = crad.AcctNbr
|
||||
And crad.EffDateTime > sysdate - 30 --check if mostrecentclosed date has opened in last 30 days
|
||||
|
||||
left join
|
||||
(
|
||||
Select AC.AcctNbr, ASH.EffDateTime, arp.persnbr, row_number() over (partition by ARP.persnbr order by ASH.EffDateTime asc) rowRoleClosedNewReactivated
|
||||
from ACCTACCTROLEPERS ARP Join ACCT AC on AC.acctnbr = ARP.acctnbr
|
||||
Join ACCTACCTSTATHIST ASH ON ASH.ACCTNBR = ARP.ACCTNBR
|
||||
Where AC.MJACCTTYPCD NOT IN ('EXT', 'RR', 'GL', 'RTMT')
|
||||
And AC.CURRMIACCTTYPCD NOT IN ('BAT', 'CASH', 'CLRA', 'DLR', 'GL','SDB')
|
||||
AND EXISTS (select null from ACCTACCTSTATHIST CRRA Where CRRA.Acctstatcd IN ('CLS', 'CWB') and CRRA.ACCTNBR = AC.Acctnbr and CRRA.EffDateTime > sysdate - 30)
|
||||
AND EXISTS (select null from ACCTACCTSTATHIST CRRA Where CRRA.Acctstatcd IN ('ACT', 'IACT', 'DORM') and CRRA.ACCTNBR = AC.Acctnbr and CRRA.EffDateTime > sysdate - 30)
|
||||
And AC.CURRACCTSTATCD IN ('ACT', 'DORM', 'IACT')
|
||||
And ARP.ACCTROLECD IN ('OWN','SIGN','POA')
|
||||
) racr on PE.persnbr = racr.persnbr and rowRoleClosedNewReactivated = 1 and racr.EffDateTime < sysdate - 30
|
||||
--check if most recent reactivated role account has closed and reopened in last 30 days take the oldest active date before that
|
||||
|
||||
left join (Select value, valueLastUpdatedDate, persnbr, DateLastMaint from PERSUSERFIELD Where userfieldCD = 'MBRH') PUF on PUF.persnbr = ct.taxrptforpersnbr or PUF.persnbr = cr.persnbr or PUF.persnbr = aac.PersNbr
|
||||
inner join (Select persnbr, purgeyn from pers where purgeyn = 'N') PUR on PUR.persnbr = PE.persnbr
|
||||
|
||||
--option to reset all of them if so don't run this or pass in a date
|
||||
Where PUR.purgeyn = 'N'
|
||||
and (PUF.DateLastMaint > TO_TIMESTAMP(:ResetStartDate, 'MM-DD-YY HH24:MI:SS') and PUF.DateLastMaint < TO_TIMESTAMP(:ResetEndDate, 'MM-DD-YY HH24:MI:SS'))
|
||||
or PUF.valueLastUpdatedDate Is Null
|
||||
or PUF.DateLastMaint < cr.EffDateTime
|
||||
or PUF.DateLastMaint < aac."OldestTaxAccountDate"
|
||||
or PUF.DateLastMaint < aac."OldestRoleActiveDate"
|
||||
or PUF.DateLastMaint < ct.EffDateTime
|
||||
|
||||
--The oldest active or most recent closed is greater than valuelastupdatedate indicating a recent change in account status OR
|
||||
--ValuelastUpdatedate is less than or equal to passed in as current date. This should ensure if a cleanup fails we are not just relying on the value last update date one day prior to today.
|
||||
--A non existant ValuelastUpdatedate is considered to be selected and added as a user value.
|
||||
)
|
||||
Select * from CTE_ActiveClosedAccounts where "PersonNumber" != 5775
|
||||
and "UserFieldExists" = 0
|
||||
Union
|
||||
Select * from CTE_ActiveClosedAccounts where "PersonNumber" != 5775
|
||||
and "UserFieldExists" = 1
|
||||
and "OldestActiveEffectiveDate" < sysdate - 30
|
||||
and "ValueSet" = 'Y'
|
||||
Union
|
||||
Select * from CTE_ActiveClosedAccounts where "PersonNumber" != 5775
|
||||
and "UserFieldExists" = 1
|
||||
and "RecentClosedEffectiveDate" is null
|
||||
and "OldestActiveEffectiveDate" > sysdate - 30
|
||||
and "ValueSet" = 'N'
|
||||
Union
|
||||
Select * from CTE_ActiveClosedAccounts where "PersonNumber" != 5775
|
||||
and "UserFieldExists" = 1
|
||||
and "RecentClosedEffectiveDate" < sysdate - 30
|
||||
and "OldestActiveEffectiveDate" is null
|
||||
and "ValueSet" = 'N'
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
SELECT COUNT(1)
|
||||
FROM OSIBANK.PERS
|
||||
WHERE (LOWER(FIRSTNAME) LIKE '%' || :firstName || '%' OR :firstName IS NULL)
|
||||
AND (LOWER(MDLNAME) LIKE '%' || :middleName || '%' OR :middleName IS NULL)
|
||||
AND (LOWER(LASTNAME) LIKE '%' || :lastName || '%' OR :lastName IS NULL)
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
SELECT PERSNBR
|
||||
FROM OSIBANK.PERS
|
||||
WHERE (LOWER(FIRSTNAME) LIKE '%' || :firstName || '%' OR :firstName IS NULL)
|
||||
AND (LOWER(MDLNAME) LIKE '%' || :middleName || '%' OR :middleName IS NULL)
|
||||
AND (LOWER(LASTNAME) LIKE '%' || :lastName || '%' OR :lastName IS NULL)
|
||||
AND ROWNUM <= :limit
|
||||
Reference in New Issue
Block a user