Set up extra columns that are null where they are not used
SELECT distinct
DP.DIM_PROJECT_ID,
DP.PROJECT_NAME,
DP.PROJECT_TITLE,
null as admin,
DP.POINT_OF_CONTACT,
DP.FIELD,
DD.YEAR
FROM FACT_Table FAT
RIGHT OUTER
JOIN DIM_A DA on FAT.DIM_A_ID = DA.DIM_A_ID
JOIN DIM_P DP on DA.DIM_P_ID = DP.DIM_P_ID
JOIN BRIDGE_USER BUP on BUP.BRIDGE_ID = DP.DIM_P_ID
JOIN DIM_DATE DD on DD.DATE_KEY = DA.A_START_DATE_ID
WHERE DA.AWARD_CATEGORY <> 'N/A'
and DD.YEAR = '2013'
and NOT EXISTS (
SELECT *
FROM BRIDGE_USER BUP_INNER
JOIN DIM_P DP_INNER
on DP_INNER.DIM_P_ID = BUP_INNER.DIM_P_ID
WHERE DP_INNER.DIM_P_ID = DP.DIM_P_ID
AND BUP_INNER.ADMIN_FLAG = 'Y'
)
UNION ALL
SELECT distinct
DP.DIM_PROJECT_ID,
DP.PROJECT_NAME,
DP.PROJECT_TITLE,
DU.NAME_LAST CONCAT ', ' CONCAT t1.NAME_FIRST AS ADMIN,
null as POINT_OF_CONTACT,
DD.YEAR,
DP.FIELD
FROM FACT_Table as FAT
JOIN DIM_P DP ON FAT.DIM_P_ID = DP.DIM_P_ID
JOIN BRIDGE_USER BUP on BUP.DIM_P_ID = DP.DIM_P_ID
and BUP.ADMIN_FLAG = 'Y'
JOIN DIM_USER DU ON FAT.DIM_USER_ID = DU.DIM_USER_ID
JOIN DIM_DATE DD on DD.DATE_KEY = DA.A_START_DATE_ID
and DD.YEAR = '2013'
JOIN DIM_A DA ON DA.DIM_A_ID = FAT.DIM_A_ID
and DA.AWARD_CATEGORY <> 'NA'
NOT EXISTS should be more efficient since it will return an answer the moment one row is found satisfying the subquery. COUNT(*) on the other hand, will continue searching for all rows that satisfy the subquery.
I left out your GROUP BY clauses because I did not understand what you were trying to do with them since there are no aggregate functions involved.