Du kunde gör så här:
SELECT
CASE WHEN ROW_NUMBER() OVER(PARTITION BY Category ORDER BY BudgetType) = 1
THEN Category ELSE NULL END AS 'Category Caption'
, Category
, BudgetType
FROM yourTable
ORDER BY Category, BudgetType
Men som Mikael nämnde är det – i de flesta fall – verkligen inte så det ska göras. Tänk bara på att klienten till exempel kan vilja ändra sorteringen inom kategorierna, då blir den "första" raden inom varje kategori en annan.