• Shouldnt this be

    SELECT C.CATID, COUNT(*)

    FROM #DATA DINNER

    JOIN #CATEGORY C ON (C.VAL1 = DINNER.VAL1) OR (C.VAL1 IS NULL)

    GROUP BY C.CATID

    (was ON C.VAL1 = D.VAL1)