You can use a coalesce on the CustId column and a full join - see belowSELECT COALESCE(G.Custid, B.CustID) AS CustID,
ISNULL(G.Count_Of_PAR, 0),
ISNULL(B.Count_Of_NPAR, 0)
FROM (
SELECT [Custid],
ISNULL(COUNT(DISTINCT Custid), 0) AS Count_Of_PAR
FROM [DEV].[dbo].[Trans]
WHERE complete_date >= '09/30/2012'
AND complete_date < DATEADD(DAY, 1, '09/30/2012')
AND Category = 'PAR'
GROUP BY
Custid
) G
FULL JOIN (
SELECT IP.[Custid],
ISNULL(COUNT(DISTINCT Custid), 0) AS Count_Of_NPAR
FROM [DEV].[dbo].[Trans]
WHERE complete_date >= '09/30/2012'
AND complete_date < DATEADD(DAY, 1, '09/30/2012')
AND Category = 'NPAR'
GROUP BY
IP.[Custid]
)B
ON G.Custid = B.Custid;You may also be able to rewrite the query like shown below (although I am just reading through the query without actually testing it - so I could be wrong)SELECT
CustID,
COUNT( DISTINCT CASE WHEN category = 'PAR' THEN Custid END) AS Count_Of_PAR,
COUNT( DISTINCT CASE WHEN category = 'NPAR' THEN Custid END) AS Count_Of_NPAR
FROM
[DEV].[dbo].[Trans]
WHERE
complete_date >= '09/30/2012'
AND complete_date < DATEADD(DAY, 1, '09/30/2012')
GROUP BY
[Custid];