Click here to Skip to main content
15,894,343 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
Need to reorganise the undernoted using parameters instead of



----------------UPLOADING FROM LOANS_TRANS---------------
              ----------------UPLOADING FROM LOANS_TRANS---------------
              UPDATE L
                     SET  L.TOT_ACT_INT =  L.TOT_ACT_INT + LT.AMOUNTSUN
                 FROM LOANS L
                 INNER JOIN
                 (
                 SELECT IDNO,ID_CODE,TRANS_TYPE, SUM(AMOUNT) AS AMOUNTSUN
                    FROM LOAN_TRANS LT
                    GROUP BY IDNO,ID_CODE,TRANS_TYPE
                ) LT
                 ON L.IDNO=LT.IDNO AND L.LOANUMBER=LT.ID_CODE
                 WHERE  LT.TRANS_TYPE= 'INTEREST'

              ----------------UPLOADING FROM LOANS_TRANS---------------
              ----------------UPLOADING FROM LOANS_TRANS---------------


            ----------------UPLOADING FROM LOANS_TRANS---------------
              ----------------UPLOADING FROM LOANS_TRANS---------------
              UPDATE L
                     SET  L.TOT_ACT_PRIN =  L.TOT_ACT_PRIN+ LT.AMOUNTSUN
                 FROM LOANS L
                 INNER JOIN
                 (
                 SELECT IDNO,ID_CODE,TRANS_TYPE, SUM(AMOUNT) AS AMOUNTSUN
                    FROM LOAN_TRANS LT
                    GROUP BY IDNO,ID_CODE,TRANS_TYPE
                ) LT
                 ON L.IDNO=LT.IDNO AND L.LOANUMBER=LT.ID_CODE
                 WHERE  LT.TRANS_TYPE= 'PRINCIPAL'




WHERE  LT.TRANS_TYPE= 'INTEREST'

WHERE  LT.TRANS_TYPE= 'PRINCIPAL'



Want to program this bit instead of Hard coding it any suggestion or advice


Thanks

What I have tried:

These are codes in a program and I want it generalised
Posted
Updated 17-May-17 11:19am

1 solution

Not sure about the title of your post as there is no CTE in the code you have shared.

A stored procedure with parameters looks to be a good solution e.g. (NB untested)
SQL
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE sp_UploadTrans
	@tran1 varchar(30),
	@tran2 varchar(30)
AS
BEGIN
	SET NOCOUNT ON;
	----------------UPLOADING FROM LOANS_TRANS---------------
	UPDATE L
		SET  L.TOT_ACT_INT =  L.TOT_ACT_INT + LT.AMOUNTSUN
		FROM LOANS L
		INNER JOIN
		(
			SELECT IDNO,ID_CODE,TRANS_TYPE, SUM(AMOUNT) AS AMOUNTSUN
			FROM LOAN_TRANS LT
			GROUP BY IDNO,ID_CODE,TRANS_TYPE
		) LT ON L.IDNO=LT.IDNO AND L.LOANUMBER=LT.ID_CODE         
		WHERE  LT.TRANS_TYPE= @tran1
		        
	UPDATE L
		SET  L.TOT_ACT_PRIN =  L.TOT_ACT_PRIN + LT.AMOUNTSUN
		FROM LOANS L
		INNER JOIN
		(
			SELECT IDNO,ID_CODE,TRANS_TYPE, SUM(AMOUNT) AS AMOUNTSUN
			FROM LOAN_TRANS LT
			GROUP BY IDNO,ID_CODE,TRANS_TYPE
		) LT ON L.IDNO=LT.IDNO AND L.LOANUMBER=LT.ID_CODE         
		WHERE  LT.TRANS_TYPE= @tran2
END
GO
which I think can be rationalised down to
SQL
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE sp_UploadTrans
	@tran1 varchar(30),
	@tran2 varchar(30)
AS
BEGIN
	SET NOCOUNT ON;
	----------------UPLOADING FROM LOANS_TRANS---------------
	UPDATE L
	SET  L.TOT_ACT_INT =  case when LT.TRANS_TYPE= @tran1 THEN L.TOT_ACT_INT + LT.AMOUNTSUN ELSE L.TOT_ACT_INT END,
	L.TOT_ACT_PRIN =  CASE WHEN LT.TRANS_TYPE= @tran2 THEN L.TOT_ACT_PRIN + LT.AMOUNTSUN ELSE L.TOT_ACT_PRINT END
	FROM LOANS L
	INNER JOIN
	(
		SELECT IDNO,ID_CODE,TRANS_TYPE, SUM(AMOUNT) AS AMOUNTSUN
		FROM LOAN_TRANS LT
		GROUP BY IDNO,ID_CODE,TRANS_TYPE
	) LT ON L.IDNO=LT.IDNO AND L.LOANUMBER=LT.ID_CODE         
END
GO

CAVEAT - I have not tested any of this (but it's the only solution offered after 3 days so worth a look at least)

[EDIT] This article might prove useful: Sql Server - How To Write a Stored Procedure in SQL Server[^]
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900