DECLARE @listTRADE TABLE ( GOODS_ID VARCHAR(20), TRADE_ID VARCHAR(20), PLAN_ID VARCHAR(20), AMT_APP DECIMAL(18,2), AMT_EXE DECIMAL (18,2), AMT_ETM DECIMAL (18,2), AMT_TF DECIMAL (18,2), AMT_RECEIVE_TF DECIMAL (18,2), NOTES NVARCHAR(1000), AMT_ETM_TMP DECIMAL (18,2) ) INSERT INTO @listTRADE ( GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF,NOTES,AMT_ETM_TMP) SELECT * FROM ( SELECT DISTINCT GOODS_ID,TRADE_ID,PLAN_ID,ISNULL(AMT_APP,0) AS AMT_APP,ISNULL(AMT_EXE,0) AS AMT_EXE,ISNULL(AMT_ETM,0) AS AMT_ETM,ISNULL(AMT_TF,0) AS AMT_TF,ISNULL(AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF,'' NOTES,ISNULL(AMT_ETM_TMP,0) AS AMT_ETM_TMP FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID='PLRD00000207183' UNION ALL SELECT DISTINCT FR_GOOD_ID GOODS_ID,FR_TRADE_ID TRADE_ID,FR_PLAN_ID PLAN_ID,ISNULL(FR_AMT_APP,0) AMT_APP,ISNULL(FR_AMT_EXE,0) AMT_EXE,ISNULL(FR_AMT_ETM,0) AMT_ETM,ISNULL(FR_AMT_TF,0) AMT_TF,ISNULL(FR_AMT_RECEIVE_TF,0) AMT_RECEIVE_TF,'' NOTES,ISNULL(FR_AMT_ETM_TMP,0) AMT_ETM_TMP FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID='PLRD00000207183' AND ISNULL(FR_GOOD_ID,'') <> '' UNION ALL SELECT DISTINCT TO_GOOD_ID GOODS_ID,TO_TRADE_ID TRADE_ID,TO_PLAN_ID PLAN_ID,ISNULL(TO_AMT_APP,0) AMT_APP,ISNULL(TO_AMT_EXE,0) AMT_EXE,ISNULL(TO_AMT_ETM,0) AMT_ETM,ISNULL(TO_AMT_TF,0) AMT_TF,ISNULL(TO_AMT_RECEIVE_TF,0) AMT_RECEIVE_TF,'' NOTES,ISNULL(TO_AMT_ETM_TMP,0) AMT_ETM_TMP FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID='PLRD00000207183' ) T GROUP BY GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF,NOTES,AMT_ETM_TMP SELECT * FROM @listTRADE ----11052023_SECRETKEY DECLARE @TABLE1 TABLE ( STT INT, GD_NAME NVARCHAR(200), AMT_APP DECIMAL(18, 2), AMT_EXE DECIMAL(18, 2), AMT_REMAIN DECIMAL(18, 2), TOTAL_AMT DECIMAL(18, 2), TOTAL_AMT_FN DECIMAL(18, 2), CHECKER_NAME NVARCHAR(200), XN_NAME VARCHAR(15), TOTAL_AMT_RECIVE DECIMAL(18, 2) ) INSERT INTO @TABLE1(STT,GD_NAME,AMT_APP,AMT_EXE,AMT_REMAIN,TOTAL_AMT,TOTAL_AMT_FN,CHECKER_NAME,XN_NAME,TOTAL_AMT_RECIVE) SELECT ROW_NUMBER() OVER (ORDER BY CG.GD_NAME) AS STT ,CG.GD_NAME, ISNULL(PT.AMT_APP,0) AS AMT_APP, ISNULL(PT.AMT_ETM,0) + ISNULL(PT.AMT_ETM_TMP,0) AS AMT_EXE, ISNULL(PT.AMT_APP,0) + ISNULL(PT.AMT_RECEIVE_TF,0)- ISNULL(PT.AMT_TF,0)-ISNULL(PT.AMT_ETM,0) - ISNULL(PT.AMT_ETM_TMP,0) AS AMT_REMAIN, SUM(ISNULL(PLDT.TOTAL_AMT,0)) AS TOTAL_AMT, ISNULL(PT.AMT_APP,0) + ISNULL(PT.AMT_RECEIVE_TF,0) - ISNULL(PT.AMT_TF,0) -ISNULL(PT.AMT_ETM,0) -ISNULL(PT.AMT_ETM_TMP,0) -SUM(ISNULL(PLDT.TOTAL_AMT,0)) AS TOTAL_AMT_FN, CASE WHEN PL.PROCESS_ID='APPROVE' THEN USC.TLFullName ELSE N'' END AS CHECKER_NAME, '' AS XN_NAME, ISNULL(PT.AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF FROM dbo.PL_REQUEST_DOC_DT PLDT LEFT JOIN @listTRADE PT ON PT.TRADE_ID=PLDT.TRADE_ID LEFT JOIN dbo.PL_MASTER PM ON PM.PLAN_ID=PLDT.PLAN_ID LEFT JOIN dbo.CM_GOODS CG ON CG.GD_ID=PLDT.GOODS_ID LEFT JOIN dbo.TL_USER USC ON USC.TLNANME=PLDT.CHECKER_ID LEFT JOIN dbo.PL_REQUEST_DOC PL ON PL.REQ_ID=PLDT.REQ_ID WHERE PLDT.REQ_ID='PLRD00000207183' GROUP BY PT.GOODS_ID,PT.AMT_APP,PT.AMT_ETM,PT.AMT_RECEIVE_TF,PT.AMT_TF,CG.GD_NAME,PLDT.REQ_ID,USC.TLFullName,PL.PROCESS_ID,PT.AMT_ETM_TMP SELECT * FROM @TABLE1