If I'm not missing your point, you can try it like this:

SELECT
PERFMR.PROJ_ID
, MAX(DECODE(PERFMR.ROLE_TYPE_CD, 'TYPE_DESK', PERSON.LAST_NM, NULL)) TD
, MAX(DECODE(PERFMR.ROLE_TYPE_CD, 'SPECIFICATION_WRITER', PERSON.LAST_NM, NULL)) SW
, MAX(DECODE(PERFMR.ROLE_TYPE_CD, 'CONTRACTS_ANALYST', PERSON.LAST_NM, NULL)) CA
FROM
PERFMR
, PERSON
WHERE
PERFMR.PERSON_ID = PERSON.PERSON_ID
and PERFMR.END_DT Is Null
AND PERFMR.ROLE_TYPE_CD IN ('TYPE_DESK','SPECIFICATION_WRITER','CONTRACTS_ANALYST')
group BY PERFMR.PROJ_ID;

HTH,