There's no need to join the group row to itself, so this is another possibility:
SELECT c.*
FROM #companies c
LEFT OUTER JOIN #companies g
ON c.CompanyStatus <> 'group'
AND c.GroupNumber = g.GroupNumber
AND g.CompanyStatus = 'group'
ORDER BY ISNULL(g.CompanyName, c.CompanyName), c.CompanyName
SQL DBA,SQL Server MVP(07, 08, 09) A socialist is someone who will give you the shirt off *someone else's* back.