SP Giro Tabungan

 avatar
unknown
plain_text
2 years ago
7.5 kB
6
Indexable
USE [bsi]
GO
/****** Object:  StoredProcedure [mrms].[IRRBB_Tabungan_Giro]    Script Date: 20/12/2023 15:41:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
	ALTER PROCEDURE [mrms].[IRRBB_Tabungan_Giro]
	  @reportDate VARCHAR(10),
	  @code VARCHAR(100),
	  @filterQuery VARCHAR(max),
	  @randomString VARCHAR(max),
	  @queryTempTabunganGiro VARCHAR(max)
	AS

	/*dihapus jika ingin create SP, hanya untuk testing hasil keluarannya*/
	--===============================================================================
	--DECLARE @reportDate VARCHAR(10) = '20230630';
	--DECLARE @code VARCHAR(100) = 'TAB_R_IDR';
	--DECLARE @filterQuery VARCHAR(max) = '
	--[ddm].[masterDPK_BSI_20230630].jenisProduk = ''Tabungan'' 
	--AND [ddm].[masterDPK_BSI_20230630].individu = ''R'' 
	--AND [ddm].[masterDPK_BSI_20230630].JenisValuta = ''IDR'' 
	--';
	--DECLARE @queryTempTabunganGiro VARCHAR(max) = '';
	--DECLARE @randomString VARCHAR(max) = 'random';
	--==============================================================================
	
	BEGIN
		declare @sql varchar (max) ='';
		declare @mainTable varchar(max) = '#TempRepricingGap_'+@randomString;
		declare @masterTable varchar(max) = '#TempQueryFilter_'+@randomString;
		declare @placementType varchar (max) ='';
		declare @currency varchar (max) ='';
		declare @tenor varchar (max) ='';

		set @sql = @queryTempTabunganGiro + '
		DROP TABLE IF EXISTS '+@mainTable+';
		CREATE TABLE '+@mainTable+' (
			Nominal DECIMAL(32, 2),
			saldoRataRataValue DECIMAL(32, 2),
			PortofolioRate FLOAT,
			Overnight DECIMAL(32, 2),
			Month1 DECIMAL(32, 2),
			Month2 DECIMAL(32, 2),
			Month3 DECIMAL(32, 2),
			Month4 DECIMAL(32, 2),
			Month5 DECIMAL(32, 2),
			Month6 DECIMAL(32, 2),
			Month7 DECIMAL(32, 2),
			Month8 DECIMAL(32, 2),
			Month9 DECIMAL(32, 2),
			Month10 DECIMAL(32, 2),
			Month11 DECIMAL(32, 2),
			Month12 DECIMAL(32, 2),
			Month18 DECIMAL(32, 2),
			Year2 DECIMAL(32, 2),
			Year3 DECIMAL(32, 2),
			Year4 DECIMAL(32, 2),
			Year5 DECIMAL(32, 2),
			Year6 DECIMAL(32, 2),
			Year7 DECIMAL(32, 2),
			Year8 DECIMAL(32, 2),
			Year9 DECIMAL(32, 2),
			Year10 DECIMAL(32, 2),
			Year15 DECIMAL(32, 2),
			Year20 DECIMAL(32, 2),
			Year20Plus DECIMAL(32, 2)
		);
		INSERT INTO '+@mainTable+'
		(Nominal, saldoRataRataValue, PortofolioRate, Overnight, Month1, Month2, Month3, Month4, Month5, Month6, Month7, 
		 Month8, Month9, Month10, Month11, Month12, Month18, Year2, Year3, Year4, Year5, 
		 Year6, Year7, Year8, Year9, Year10, Year15, Year20, Year20Plus)
		 VALUES 
		 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
		 0, 0, 0, 0, 0, 0, 0, 0);
		 ';
	
		set @sql = @sql + '
		DROP TABLE IF EXISTS '+@masterTable+';
		SELECT jkWaktuJatuhTempo as MaturityDate, saldoRataRata, imbalan AS Rate, saldoLSMK
		INTO '+@masterTable+'
		FROM [ddm].[masterDPK_BSI_'+@reportDate+']
		WHERE '+@filterQuery+' ;

		 --NOMINAL--
		 UPDATE '+@mainTable+' 
			SET Nominal = 
				ISNULL((
					SELECT SUM(ISNULL('+@masterTable+'.saldoLSMK, 0))
					FROM '+@masterTable+'
				),0),
				saldoRataRataValue = ISNULL((
					SELECT SUM(ISNULL('+@masterTable+'.saldoRataRata, 0))
					FROM '+@masterTable+'
				),0);

		 --PORTOFOLIO RATE in percent--
		 UPDATE '+@mainTable+' 
			SET PortofolioRate = 
				CASE WHEN ISNULL(Nominal, 0) = 0 THEN 0
				ELSE
					ISNULL((
						SELECT 
							SUM(ISNULL(A.saldoRataRata, 0) * ISNULL(A.Rate,0)) / ISNULL(saldoRataRataValue, 0)
						FROM '+@masterTable+' A
					),0) 
				END ;
		 
		 --TIME BUCKET--
		 UPDATE '+@mainTable+' 
			SET 
			Overnight = 
				ISNULL((
					select Nominal * @Overnight from '+@mainTable+'
				),0)
			, Month1 = 
				ISNULL((
					select Nominal * @1M from '+@mainTable+'
				),0)
			, Month2 = 
				ISNULL((
					select Nominal * @2M from '+@mainTable+'
				),0)
			, Month3 = 
				ISNULL((
					select Nominal * @3M from '+@mainTable+'
				),0)
			, Month4 = 
				ISNULL((
					select Nominal * @4M from '+@mainTable+'
				),0)
			, Month5 = 
				ISNULL((
					select Nominal * @5M from '+@mainTable+'
				),0)
			, Month6 = 
				ISNULL((
					select Nominal * @6M from '+@mainTable+'
				),0)
			, Month7 = 
				ISNULL((
					select Nominal * @7M from '+@mainTable+'
				),0)
			, Month8 = 
				ISNULL((
					select Nominal * @8M from '+@mainTable+'
				),0)
			, Month9 = 
				ISNULL((
					select Nominal * @9M from '+@mainTable+'
				),0)
			, Month10 = 
				ISNULL((
					select Nominal * @10M from '+@mainTable+'
				),0)
			, Month11 = 
				ISNULL((
					select Nominal * @11M from '+@mainTable+'
				),0)
			, Month12 = 
				ISNULL((
					select Nominal * @12M from '+@mainTable+'
				),0)
			--, Month18 = 
			--	ISNULL((
			--		SELECT SUM(ISNULL(A.saldoLSMK, 0)) 
			--		FROM xTblTimeBucket_'+@randomString+' A
			--		WHERE DATEDIFF(DAY, CAST('''+@reportDate+''' AS DATE), CAST(A.JkWaktuJatuhTempo AS DATE)) BETWEEN 361 AND 540
			--	),0)
			, Year2 = 
				ISNULL((
					select Nominal * @2Y from '+@mainTable+'
				),0)
			, Year3 = 
				ISNULL((
					select Nominal * @3Y from '+@mainTable+'
				),0)
			, Year4 = 
				ISNULL((
					select Nominal * @4Y from '+@mainTable+'
				),0)
			, Year5 = 
				ISNULL((
					select Nominal * @5Y from '+@mainTable+'
				),0)
			, Year6 = 
				ISNULL((
					select Nominal * @6Y from '+@mainTable+'
				),0)
			, Year7 = 
				ISNULL((
					select Nominal * @7Y from '+@mainTable+'
				),0)
			, Year8 = 
				ISNULL((
					select Nominal * @8Y from '+@mainTable+'
				),0)
			, Year9 = 
				ISNULL((
					select Nominal * @9Y from '+@mainTable+'
				),0)
			, Year10 = 
				ISNULL((
					select Nominal * @10Y from '+@mainTable+'
				),0)
			, Year15 = 
				ISNULL((
					select Nominal * @11YAbove from '+@mainTable+'
				),0);';

		set @sql = @sql + '
		SELECT Nominal AS ColumnValue FROM '+@mainTable+'
		UNION ALL
		SELECT CAST(PortofolioRate AS DECIMAL(10, 2)) FROM '+@mainTable+'
		UNION ALL
		SELECT Overnight FROM '+@mainTable+'
		UNION ALL
		SELECT Month1 FROM '+@mainTable+'
		UNION ALL
		SELECT Month2 FROM '+@mainTable+'
		UNION ALL
		SELECT Month3 FROM '+@mainTable+'
		UNION ALL
		SELECT Month4 FROM '+@mainTable+'
		UNION ALL
		SELECT Month5 FROM '+@mainTable+'
		UNION ALL
		SELECT Month6 FROM '+@mainTable+'
		UNION ALL
		SELECT Month7 FROM '+@mainTable+'
		UNION ALL
		SELECT Month8 FROM '+@mainTable+'
		UNION ALL
		SELECT Month9 FROM '+@mainTable+'
		UNION ALL
		SELECT Month10 FROM '+@mainTable+'
		UNION ALL
		SELECT Month11 FROM '+@mainTable+'
		UNION ALL
		SELECT Month12 FROM '+@mainTable+'
		UNION ALL
		SELECT Month18 FROM '+@mainTable+'
		UNION ALL
		SELECT Year2 FROM '+@mainTable+'
		UNION ALL
		SELECT Year3 FROM '+@mainTable+'
		UNION ALL
		SELECT Year4 FROM '+@mainTable+'
		UNION ALL
		SELECT Year5 FROM '+@mainTable+'
		UNION ALL
		SELECT Year6 FROM '+@mainTable+'
		UNION ALL
		SELECT Year7 FROM '+@mainTable+'
		UNION ALL
		SELECT Year8 FROM '+@mainTable+'
		UNION ALL
		SELECT Year9 FROM '+@mainTable+'
		UNION ALL
		SELECT Year10 FROM '+@mainTable+'
		UNION ALL
		SELECT Year15 FROM '+@mainTable+'
		UNION ALL
		SELECT Year20 FROM '+@mainTable+'
		UNION ALL
		SELECT Year20Plus FROM '+@mainTable+'

		DROP TABLE IF EXISTS '+@mainTable+';
		DROP TABLE IF EXISTS '+@masterTable+';
		';
		exec (@sql)
	END;
Editor is loading...
Leave a Comment