Files
monorepo/LCU.Api.Internal.CoreApiWrapper/LCU.Library.Internal.CoreApiWrapperLib/Queries/AgreeUserByAccountsQuery.sql
T
2026-03-31 14:32:23 -05:00

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})