Que tal usar uma função de particionamento COUNT OVER (PARTITION BY {coluna para agrupar por}) no SQL Server?
Por exemplo, se você deseja agrupar as vendas de produtos por ItemID e deseja uma contagem de cada ItemID distinto, basta usar:
SELECT
{columns you want} ,
COUNT(ItemID) OVER (PARTITION BY ItemID) as BandedItemCount ,
{more columns you want}... ,
FROM {MyTable}
Se você usar essa abordagem, poderá deixar o GROUP BY fora de cena - supondo que você queira retornar a lista inteira (como você pode reportar faixas onde você precisa saber toda a contagem de itens que você vai agrupar sem ter para exibir todo o conjunto de dados, ou seja, Reporting Services).