Pochissime opzioni, temo.
Devi sempre toccare il tavolo due volte, sia COUNT, EXISTS prima, EXISTs in UNION, clausola TOP ecc
select
id, category
from mytable
where category = @category
union all --edit, of course it's quicker
select
0, ''
where NOT EXISTS (SELECT * FROM mytable where category = @category)
Una soluzione EXISTS è meglio di COUNT perché si fermerà quando trova una riga. COUNT attraverserà tutte le righe per conteggiarle effettivamente