I think I was looking at something like this recently, but not broken down by transtype at all.
Info that cracked what i was after came from this thread ;
and I ended up with NSQL like this;
SELECT @SELECT:DIM:USER_DEF:IMPLIED:XX:inv_id:inv_id@
,@SELECT:DIM_PROP:USER_DEF:IMPLIED:XX:inv_code:inv_code@
,@SELECT:DIM_PROP:USER_DEF:IMPLIED:XX:inv_name:inv_name@
,@SELECT:DIM_PROP:USER_DEF:IMPLIED:XX:planned_cost:planned_cost@
,@SELECT:DIM_PROP:USER_DEF:IMPLIED:XX:actual_cost:actual_cost@
FROM
( SELECT p.id inv_id
, p.code inv_code
, p.name inv_name
, fin.TOTAL_COST as planned_cost
, ( select SUM(WV.TOTALCOST) totalcost
FROM PPA_WIP W
INNER JOIN PPA_WIP_VALUES WV ON W.TRANSNO = WV.TRANSNO AND WV.CURRENCY_TYPE = 'HOME'
INNER JOIN INV_INVESTMENTS II ON W.INVESTMENT_ID = II.ID
INNER JOIN FIN_PLANS FP ON FP.PLAN_TYPE_CODE = 'BUDGET' AND FP.OBJECT_ID = II.ID AND FP.IS_PLAN_OF_RECORD = 1
INNER JOIN BIZ_COM_PERIODS SP ON FP.START_PERIOD_ID = SP.ID
INNER JOIN BIZ_COM_PERIODS EP ON FP.END_PERIOD_ID = EP.ID
WHERE W.STATUS = 0
AND W.INVESTMENT_ID = P.id
AND W.TRANSDATE >= SP.START_DATE
AND W.TRANSDATE < EP.END_DATE
) AS actual_cost
FROM INV_INVESTMENTS p
LEFT JOIN fin_plans fin ON fin.OBJECT_ID = p.ID
WHERE fin.plan_type_code = 'BUDGET'
AND fin.is_plan_of_record = 1
) a
WHERE @FILTER@
You could try using that as a start/guide?