This should do the work for you
SELECTCASE WHEN C.active_flag = 1 THEN 'Active' ELSE 'Inactive' END AS active_flag,
C.name, C.company_code,
SUM( CASE WHEN P.active_flag = 1 AND P.unregister_flag = 0 THEN 1 ELSE 0 END ) AS active_users,
SUM( CASE WHEN P.active_flag = 1 AND P.unregister_flag = 1 THEN 1 ELSE 0 END ) AS new_users,
SUM( CASE WHEN P.active_flag = 0 THEN 1 ELSE 0 END ) AS inactive_users,
C.test_company_flag, C.parent_company_flag
FROMdbo.company AS C
LEFT OUTER JOINdbo.person AS P ON C.company_code = P.company_code
GROUP BY CASE WHEN C.active_flag = 1 THEN 'Active' ELSE 'Inactive' END,
C.name, C.company_code, C.test_company_flag, C.parent_company_flag
How to post data/code on a forum to get the best help - Jeff Moden
http://www.sqlservercentral.com/articles/Best+Practices/61537/