Anda bisa lakukan seperti ini:
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
Tetapi seperti yang disebutkan Mikael, ini - dalam banyak kasus - benar-benar bukan cara yang seharusnya dilakukan. Anggap saja klien mungkin, misalnya, ingin mengubah pengurutan dalam kategori, maka baris 'pertama' dalam setiap kategori akan berbeda.