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_NPARFROM [DEV].[dbo].[Trans]WHERE complete_date >= '09/30/2012' AND complete_date < DATEADD(DAY, 1, '09/30/2012')GROUP BY [Custid];