SP Loan Prepayment Rate
unknown
plain_text
2 years ago
5.5 kB
22
Indexable
DROP TABLE IF EXISTS #TempResultLoan_random;
CREATE TABLE #TempResultLoan_random (
totalEarlyPrepayment FLOAT,
totalOutstanding FLOAT,
sMM FLOAT,
componentCode VARCHAR(20)
);
DROP TABLE IF EXISTS #TempRepricingGap_random;
CREATE TABLE #TempRepricingGap_random (
sisaPokokPSAKValue DECIMAL(32,2),
imbalanAkanDiterimaValue DECIMAL(32,2),
smm FLOAT,
code VARCHAR(20),
jenisValuta VARCHAR(20)
);
INSERT INTO #TempResultLoan_random (totalEarlyPrepayment, totalOutstanding, sMM, componentCode)
VALUES
(cast(0 as float), cast(0 as float), cast(0 as float), 'PMGNR_IDR'),
(cast(0 as float), cast(0 as float), cast(0 as float), 'PMMNR_IDR'),
(cast(0 as float), cast(0 as float), cast(0 as float), 'PMPNR_IDR'),
(cast(0 as float), cast(0 as float), cast(0 as float), 'PMMICNR_IDR'),
(cast(0 as float), cast(0 as float), cast(0 as float), 'PMLNR_V'),
(cast(0 as float), cast(0 as float), cast(0 as float), 'PMLNR_IDR')
;
--NON REVIEWABLE--
DROP TABLE IF EXISTS #TempQuery_random;
SELECT
pembiayaanLastBSI.sisaPokokPSAK,
pembiayaanLastBSI.imbalanAkanDiterima,
pembiayaanLastBSI.kodeProduk,
pembiayaanLastBSI.noRekening,
pembiayaanLastBSI.jenisValuta,
case
when LOWER(pembiayaanClose.jenisValuta) = 'idr' and LOWER(pembiayaanClose.segmenBSI) = 'consumer' and LOWER(pembiayaanClose.namaProdukBSI) IN ('griya', 'griya flpp', 'griya berkah')
then 'PMGNR_IDR'
when LOWER(pembiayaanClose.jenisValuta) = 'idr' and LOWER(pembiayaanClose.segmenBSI) = 'consumer' and LOWER(pembiayaanClose.namaProdukBSI) IN ('mitraguna', 'mitraguna&other', 'multiguna secure')
then 'PMMNR_IDR'
when LOWER(pembiayaanClose.jenisValuta) = 'idr' and LOWER(pembiayaanClose.segmenBSI) = 'consumer' and LOWER(pembiayaanClose.namaProdukBSI) IN ('pensiun', 'pensiun berkah', 'pensiunan asabri', 'pensiunan asn', 'pensiunan berkah', 'pensiunan bumn')
then 'PMPNR_IDR'
when LOWER(pembiayaanClose.jenisValuta) = 'idr' and LOWER(pembiayaanClose.segmenBSI) = 'mikro'
then 'PMMICNR_IDR'
when LOWER(pembiayaanClose.jenisValuta) <> 'idr'
then 'PMLNR_V'
else 'PMLNR_IDR' END AS code
INTO #TempQuery_random
FROM [ddm].[masterPembiayaan_close_20230630] pembiayaanClose
LEFT OUTER JOIN [ddm].[masterPembiayaan_BSI_20230531] pembiayaanLastBSI on pembiayaanLastBSI.noRekening = pembiayaanClose.noRekening
LEFT OUTER JOIN ##LoanTyperandom loan on loan.ProductKey = pembiayaanLastBSI.kodeProduk
WHERE LOWER(loan.MappingIRRBB) = 'sesuai jangka waktu'
AND pembiayaanClose.pelunasDipercepat = 'Y'
AND YEAR(CAST(pembiayaanClose.CloseDate AS DATE)) = 2023 and FORMAT(MONTH(CAST(pembiayaanClose.CloseDate AS DATE)), '00') = 06
;
DROP TABLE IF EXISTS #TempQuerySecond_random;
SELECT
pembiayaanBSI.sisaPokokPSAK,
pembiayaanBSI.imbalanAkanDiterima,
pembiayaanBSI.kodeProduk,
pembiayaanBSI.noRekening,
pembiayaanBSI.jenisValuta,
case
when LOWER(pembiayaanBSI.jenisValuta) = 'idr' and LOWER(pembiayaanBSI.segmenBSI) = 'consumer' and LOWER(pembiayaanBSI.namaProdukBSI) IN ('griya', 'griya flpp', 'griya berkah')
then 'PMGNR_IDR'
when LOWER(pembiayaanBSI.jenisValuta) = 'idr' and LOWER(pembiayaanBSI.segmenBSI) = 'consumer' and LOWER(pembiayaanBSI.namaProdukBSI) IN ('mitraguna', 'mitraguna&other', 'multiguna secure')
then 'PMMNR_IDR'
when LOWER(pembiayaanBSI.jenisValuta) = 'idr' and LOWER(pembiayaanBSI.segmenBSI) = 'consumer' and LOWER(pembiayaanBSI.namaProdukBSI) IN ('pensiun', 'pensiun berkah', 'pensiunan asabri', 'pensiunan asn', 'pensiunan berkah', 'pensiunan bumn')
then 'PMPNR_IDR'
when LOWER(pembiayaanBSI.jenisValuta) = 'idr' and LOWER(pembiayaanBSI.segmenBSI) = 'mikro'
then 'PMMICNR_IDR'
when LOWER(pembiayaanBSI.jenisValuta) <> 'idr'
then 'PMLNR_V'
else 'PMLNR_IDR' END AS code
INTO #TempQuerySecond_random
FROM [ddm].[masterPembiayaan_BSI_20230531] pembiayaanBSI
LEFT OUTER JOIN ##LoanTyperandom loan on loan.ProductKey = pembiayaanBSI.kodeProduk
WHERE LOWER(loan.MappingIRRBB) = 'sesuai jangka waktu'
;
With xTempResult AS (
SELECT
CAST(resultThisMonth AS float) totalEarlyPrepayment,
CAST(resultLastMonth AS float) totalOutstanding,
CASE WHEN resultLastMonth = 0 THEN 0
ELSE
CAST(resultThisMonth AS float) / CAST(resultLastMonth AS float)
END AS sMM
, pembiayaanBSICode componentCode
FROM (
SELECT
SUM(COALESCE(A.sisaPokokPSAK,0) - COALESCE(A.imbalanAkanDiterima,0)) as resultThisMonth,
SUM(COALESCE(B.sisaPokokPSAK,0) - COALESCE(B.imbalanAkanDiterima,0)) as resultLastMonth,
A.code pembiayaanBSICode, B.code pembiayaanBSILastCode
FROM #TempQuery_random A
LEFT OUTER JOIN #TempQuerySecond_random B on A.code = B.code
GROUP BY A.code, B.code
) A
)
UPDATE #TempResultLoan_random
SET totalEarlyPrepayment = xTempResult.totalEarlyPrepayment,
totalOutstanding = xTempResult.totalOutstanding,
sMM = xTempResult.sMM
FROM xTempResult
WHERE #TempResultLoan_random.componentCode = xTempResult.componentCode
;
Select * from #TempResultLoan_random;
--SELECT smm AS SMM FROM #TempRepricingGap_random
DROP TABLE IF EXISTS #TempResultLoan_random;
DROP TABLE IF EXISTS #TempRepricingGap_random;
DROP TABLE IF EXISTS #TempQuery_random;
DROP TABLE IF EXISTS #TempQuerySecond_random;
Editor is loading...
Leave a Comment