What I would do is to populate a temp table with the original query, and then create a second query with 2 instances of that temp table joined to itself.
(13:03 UCT)The query is relatively simple, but I need to get on the road now and don't have time to type it out... I will update this answer in about an hour or so
(15:44 UTC) Update with code sample for above
DECLARE @Temp TABLE (Bttla INT, PreLastDone DATETIME, JpNum CHAR(1))
INSERT @Temp (Bttla, JpNum, PreLastDone)
SELECT BTTLA, JPNUM, MAX(ACTFINISH) as PreLastDone
FROM MAXIMO."BTV_ZZZ"
WHERE SITEID ='XXXX'
AND JPNUM in ('A', 'B')
AND WOCLASS = 'ZZZ'
AND ACTFINISH > SYSDATE-3
GROUP BY BTTLA, JPNUM
SELECT TLA = a.BTTLA
, [JP: B] = b.PreLastDone
, [JP: A] = a.PreLastDone
FROM @Temp a
INNER JOIN @Temp b ON a.BTTLA = b.BTTLA
ORDER BY TLA