MAT DVD SALESMAC L12 3MAE L12 3MAS L12 3Tot L12 9MAC L01 1Tot L01 5MAS L01 4
MAT DVD SALESMAE L12 3MAC L12 3MAS L12 3Tot L12 9MAC L01 1MAS L01 4Tot L01 5
SELECT [MAT], [DVD], [SALES]FROM ( SELECT [MAT], [DVD], [SALES] FROM TestTable UNION SELECT COALESCE ([MAT], 'Tot') AS [MAT], [DVD], SUM ([SALES]) FROM TestTable GROUP BY (MAT), [DVD] ) qORDER BY [DVD] DESC, CASEWHEN MAT IS NULL THEN 1ELSE 0END;-- ------------------------------ Table structure for [dbo].[TestTable]-- ----------------------------DROP TABLE [dbo].[TestTable]GOCREATE TABLE [dbo].[TestTable] ([MAT] varchar(50) NULL ,[DVD] varchar(50) NULL ,[SALES] int NULL)GO-- ------------------------------ Records of TestTable-- ----------------------------INSERT INTO [dbo].[TestTable] ([MAT], [DVD], [SALES]) VALUES (N'Tot', N'L01', N'5');GOINSERT INTO [dbo].[TestTable] ([MAT], [DVD], [SALES]) VALUES (N'MAC', N'L12', N'3');GOINSERT INTO [dbo].[TestTable] ([MAT], [DVD], [SALES]) VALUES (N'MAS', N'L01', N'4');GOINSERT INTO [dbo].[TestTable] ([MAT], [DVD], [SALES]) VALUES (N'MAE', N'L12', N'3');GOINSERT INTO [dbo].[TestTable] ([MAT], [DVD], [SALES]) VALUES (N'MAC', N'L01', N'1');GOINSERT INTO [dbo].[TestTable] ([MAT], [DVD], [SALES]) VALUES (N'Tot', N'L12', N'9');GOINSERT INTO [dbo].[TestTable] ([MAT], [DVD], [SALES]) VALUES (N'MAS', N'L12', N'3');GO
GROUP BY (MAT), [DVD] WITH ROLLUP
SELECT COALESCE ([MAT], 'Tot') AS [MAT], [DVD], SUM ([SALES])FROM TestTableGROUP BY (MAT), [DVD] --with rollup ORDER BY[DVD] DESC
SELECT [MAT], [DVD], [SALES]FROM TestTableORDER BY DVD DESC ,CASE WHEN MAT = 'Tot' THEN 1 ELSE 0 END ,MAT
INSERT INTO [dbo].[TestTable] ([MAT], [DVD], [SALES]) VALUES (N'WAS', N'L12', N'3');
ORDER BY [DVD] DESC, CASE WHEN MAT = 'Tot' THEN 1 ELSE 0 END, MAT
ORDER BY [DVD] DESC, CASE WHEN MAT = 'Tot' THEN 1 ELSE 0 END
MAT DVD SALESMAC L12 3MAE L12 3MAS L12 3Tot L12 9MAC L01 1MAS L01 4Tot L01 5