38 lines
2.5 KiB
SQL
38 lines
2.5 KiB
SQL
SELECT A.ACCTNBR AS AccountNumber,
|
|
COALESCE(Y.AGREENBR,Z.AGREENBR) AS AgreeNumber,
|
|
CAST(TRIM(COALESCE(Y.USERID,Z.USERID,CASE WHEN A.MEMBERAGREENBR IS NULL THEN NULL ELSE 'M'||A.MEMBERAGREENBR END)) AS VARCHAR2(32)) AS UserId
|
|
FROM OSIBANK.ACCT A
|
|
LEFT JOIN (/*FIND PPL WHO HAVE ACCESS TO ACCT AS WWW AND ARE ACTIVE(IN TWO TABLES), BREAK TIES WITH LOWEST AGREENBR*/
|
|
SELECT ROW_NUMBER() OVER (PARTITION BY APATA.ACCTNBR,APATA.PERSNBR ORDER BY APATA.AGREENBR) AS ID,
|
|
APATA.ACCTNBR,
|
|
APATA.PERSNBR,
|
|
AP.USERID,
|
|
AG.AGREENBR
|
|
FROM OSIBANK.AGREE AG /*[PK:AGREENBR]*/
|
|
INNER JOIN OSIBANK.AGREEPERS AP ON AP.AGREENBR=AG.AGREENBR
|
|
AND AP.ACTIVEYN='Y' /*[PK:AGREENBR, PERSNBR] [NEEDS TO BE ACTIVE]*/
|
|
INNER JOIN OSIBANK.AGREEPERSACCESSTYP APAT ON APAT.AGREENBR=AP.AGREENBR
|
|
AND APAT.PERSNBR=AP.PERSNBR
|
|
AND APAT.ACCESSTYPCD='WWW'
|
|
AND APAT.ACTIVEYN='Y' /*[PK:AGREENBR, PERSNBR, ACCESSTYPCD('WWW')] [NEEDS TO BE ACTIVE]*/
|
|
INNER JOIN OSIBANK.AGREEPERSACCESSTYPACCT APATA ON APATA.AGREENBR=AP.AGREENBR
|
|
AND APATA.PERSNBR=AP.PERSNBR
|
|
AND APATA.ACCESSTYPCD=APAT.ACCESSTYPCD /*[PK:AGREENBR, PERSNBR, ACCESSTYPCD('WWW'), ACCTNBR]*/
|
|
) Y ON Y.ACCTNBR=A.ACCTNBR AND Y.PERSNBR=A.TAXRPTFORPERSNBR AND Y.ID=1
|
|
LEFT JOIN (/*FIND PPL WHO HAVE ACCESS TO ORG AS WWW AND ARE ACTIVE(IN TWO TABLES), BREAK TIES WITH PERSON WHO IS CURRENTLY ACTIVE, WAS ACTIVE FIRST, LOWEST AGREENBR, LOWEST PERSNBR*/
|
|
SELECT ROW_NUMBER() OVER (PARTITION BY AG.BYORGNBR ORDER BY CASE WHEN RO.EFFDATE<=TRUNC(CURRENT_DATE) AND (RO.INACTIVEDATE IS NULL OR RO.INACTIVEDATE>TRUNC(CURRENT_DATE)) THEN 0 ELSE 1 END,RO.EFFDATE,AG.AGREENBR,AP.PERSNBR) AS ID,
|
|
AG.BYORGNBR,
|
|
AP.USERID,
|
|
AG.AGREENBR
|
|
FROM OSIBANK.AGREE AG /*[PK:AGREENBR]*/
|
|
INNER JOIN OSIBANK.AGREEPERS AP ON AP.AGREENBR=AG.AGREENBR
|
|
AND AP.ACTIVEYN='Y' /*[PK:AGREENBR, PERSNBR] [NEEDS TO BE ACTIVE]*/
|
|
INNER JOIN OSIBANK.AGREEPERSACCESSTYP APAT ON APAT.AGREENBR=AP.AGREENBR
|
|
AND APAT.PERSNBR=AP.PERSNBR
|
|
AND APAT.ACCESSTYPCD='WWW'
|
|
AND APAT.ACTIVEYN='Y' /*[PK:AGREENBR, PERSNBR, ACCESSTYPCD('WWW')] [NEEDS TO BE ACTIVE]*/
|
|
LEFT JOIN OSIBANK.ORGPERSROLE RO ON RO.ORGNBR=AG.BYORGNBR
|
|
AND RO.PERSNBR=AP.PERSNBR
|
|
AND RO.PERSROLECD=APAT.ACCESSTYPCD /*[PK:ORGNBR, PERSROLECD, EFFDATE, PERSNBR]*/
|
|
) Z ON Z.BYORGNBR=A.TAXRPTFORORGNBR AND Z.ID=1
|
|
WHERE A.ACCTNBR in ({AccountNumbersHolder}) |