select EMP_ID,(SELECT DISPLAY_NAME FROM PRTEMPLOYEE EE WHERE EE.EMP_ID=EH.EMP_ID) "Name",
'CUR' "TYPE",TRX_DATE ,TRX_TYPE,DEF_ID,
CAST ( (SELECT FACT_VALUE FROM PRTEMPFACT WHERE EMP_ID=EH.EMP_ID AND DEF_ID=EH.DEF_ID AND FACTOR_ID='PAYMENT') AS CHAR(20) )"Ded Amt",
CAST(0 AS NUMERIC (15,2)) "Beg Bal",CAST(DEF_VALUE AS NUMERIC (15,2)) "New Loans",CAST(0 AS NUMERIC (15,2)) "Deductions"
from prtempdefhst EH
where EH.def_id IN ( :DED_1 , :DED_2)
AND EH.TRX_DATE BETWEEN :BEG_DATE AND :END_DATE AND EH.TRX_TYPE='B'
UNION
select EMP_ID,(SELECT DISPLAY_NAME FROM PRTEMPLOYEE EE WHERE EE.EMP_ID=EH.EMP_ID) "Name",
'CUR' "TYPE",TRX_DATE ,TRX_TYPE,DEF_ID,
CAST ( (SELECT FACT_VALUE FROM PRTEMPFACT WHERE EMP_ID=EH.EMP_ID AND DEF_ID=EH.DEF_ID AND FACTOR_ID='PAYMENT') AS CHAR(20) )"Ded Amt",
CAST(0 AS NUMERIC (15,2)) "Beg Bal",CAST(0 AS NUMERIC (15,2)) "New Loans",CAST(DEF_VALUE AS NUMERIC (15,2)) "Deductions"
from prtempdefhst EH
where EH.def_id IN ( :DED_1 , :DED_2)
AND EH.TRX_DATE BETWEEN :BEG_DATE AND :END_DATE AND EH.TRX_TYPE='S'
UNION
select EMP_ID,(SELECT MAX(DISPLAY_NAME) FROM PRTEMPLOYEE EE WHERE EE.EMP_ID=E.EMP_ID) "Name",
'BEG' "TYPE",
MAX(LH.TRX_DATE),'A' ,DEF_ID,
CAST ( (SELECT MAX(FACT_VALUE) FROM PRTEMPFACT EF WHERE EF.EMP_ID=E.EMP_ID AND EF.DEF_ID=E.DEF_ID AND EF.FACTOR_ID='PAYMENT') AS CHAR(20) ) "Ded Amt",
CAST(SUM(LH.DEF_VALUE) AS NUMERIC (15,2)) "Beg Bal",
CAST(0 AS NUMERIC (15,2)) "New Loans",CAST(0 AS NUMERIC (15,2)) "Deductions"
from prtempdef E
LEFT OUTER JOIN PRPEMPDEF_LOANHISTORY( :BEG_DATE , :BEG_DATE ,E.EMP_ID,E.DEF_ID) LH ON 1=1
where E.def_id IN ( :DED_1 , :DED_2)
AND LH.TRXTYPE='A'
AND EXISTS (SELECT EMP_ID FROM PRTEMPDEFHST EDH WHERE EDH.DEF_ID=E.DEF_ID AND EDH.EMP_ID=E.EMP_ID)
GROUP BY EMP_ID,DEF_ID