with dcard AS ( SELECT 'dcard' srce ,r.id id ,r.logid logid --,r."Trans. Date" ,r."Post Date" pdate ,r."Description" descr ,-r."Amount" amount ,r."Category" category ,r."Party" party ,r."Reason" reason ,-(SUM(r."Amount") OVER (ORDER BY r."Post Date" asc , r."Description") + 1083.50) balance FROM tpsv.dcard_mapped r ORDER BY r."Post Date" desc ) ,hunt as ( SELECT 'hunt' srce ,r.id ,r.logid --,r."Reference Number" --,r."Payee Name" ,r."Date" ,r."Memo" ,r."Amount" ,r."Cateogry Name" ,r."Party" ,r."Reason" ,SUM(r."Amount") OVER (ORDER BY r."Date" asc , r.id) + 29909.75 balance FROM tpsv.hunt_mapped r ORDER BY r."Date" desc ) ,chase AS ( SELECT 'chase' srce ,r.id ,r.logid --,r."Trans Date" ,r."Post Date" ,r."Description" ,r."Amount" "Amount" ,r."Type" ,null::text "Party" ,null::text "Reason" ,-(SUM(-r."Amount") OVER (ORDER BY r."Post Date" asc , r.id) + 374.23) balance FROM tpsv.chase_default r ORDER BY r."Post Date" desc ) ,stacked AS ( SELECT * FROM dcard UNION ALL SELECT * FROM hunt UNION ALL SELECT * FROM chase ) ,format AS ( SELECT s.srce ,s.id ,s.logid ,s.pdate ,s.descr ,s.amount --,s.category ,s.party ,s.reason --,s.balance ,CASE WHEN s.srce = 'hunt' THEN s.balance ELSE null END hunt ,CASE WHEN s.srce = 'dcard' THEN s.balance ELSE null END dcard ,CASE WHEN s.srce = 'chase' THEN s.balance ELSE null END chase ,sum(s.amount) over (ORDER BY s.pdate asc, s.id) + 28452.02 netbalance FROM stacked s ORDER BY s.pdate desc ,s.id desc ) SELECT * FROM format