Be careful not to have columns named 'Group', that will really be a pain to code with. Try this.CREATE TABLE #Temp(Id int identity(1,1),[Type] varchar(20),Amount int,[Group] int)INSERT INTO #Temp ([Type], Amount, [Group])SELECT 'Cash' , 100 , NULL UNION ALLSELECT 'Rate' , 200 , 10 UNION ALLSELECT 'Restaurante', 50 , 10 UNION ALLSELECT 'Bar' , 75 , 10 UNION ALLSELECT 'Transfer' , 45 , 10 UNION ALLSELECT 'Coke' , 2 , NULL UNION ALLSELECT 'Wine' , 25 , NULL UNION ALLSELECT 'Rate' , 200 , 11 UNION ALLSELECT 'Restaurante', 50 , 11 UNION ALLSELECT 'Bar' , 75 , 11 UNION ALLSELECT 'Transfer' , 45 , 11 UNION ALLSELECT 'Bar' , 110 , NULL UNION ALLSELECT 'Tour' , 130 , NULLSELECT [Type], SUM(Amount) as Amount, NULL AS [Group]FROM #TempWHERE [Group] IS NULLGROUP BY [Type]UNION ALLSELECT 'Group ' + CAST([Group] AS VARCHAR),SUM(Amount),[Group]FROM #TempWHERE [Group] IS NOT NULLGROUP BY [Group]