DECLARE @Expenses TABLE ([S.no] INT ,[Travel Expense] MONEY ,[Stay Expense] MONEY ,[Mis Expens] MONEY ,[Date] DATE ,[Employee] VARCHAR(10))INSERT INTO @ExpensesSELECT 1,10,15,0,'2012-01-19','James' UNION ALL SELECT 2,5,5,5,'2012-01-20','James'SELECT [Date] ,CASE WHEN Category IS NULL AND [Date] IS NULL THEN 'Total' WHEN Category IS NULL THEN 'Subtotal' ELSE Category END ,Expense=SUM(Expense)FROM @ExpensesCROSS APPLY ( VALUES ('Travel Expense', [Travel Expense]) ,('Stay Expense', [Stay Expense]) ,('Mis Expens', [Mis Expens])) a(Category, Expense)GROUP BY Date, Category WITH ROLLUP