Du kunne gør det sådan her:
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ævnte, er det - i de fleste tilfælde - virkelig ikke sådan, det skal gøres. Tænk bare på, at klienten for eksempel kan ønske at ændre sorteringen inden for kategorierne, så vil den 'første' række inden for hver kategori være en anden.