Zeer weinig opties vrees ik.
U moet de tafel altijd twee keer aanraken, of het nu gaat om COUNT, EXISTS ervoor, EXISTs in UNION, TOP-clausule enz.
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)
Een EXISTS-oplossing is beter dan COUNT omdat deze stopt wanneer hij een rij vindt. COUNT doorloopt alle rijen om ze daadwerkelijk te tellen