与SQL服务器RollUP相加 - 但只是最后一个摘要?

Roy*_*mir 19 sql-server rollup sum sql-server-2008

我有这个问题:

DECLARE @t TABLE(NAME NVARCHAR(MAX),datee date,val money)

insert INTO @t SELECT 'a','2012-01-02',100
insert INTO @t SELECT 'a','2012-01-02',100
insert INTO @t SELECT 'a','2012-01-03',100
insert INTO @t SELECT 'a','2012-01-05',100
insert INTO @t SELECT 'b','2012-01-06',200
insert INTO @t SELECT 'b','2012-01-07',200
insert INTO @t SELECT 'd','2012-01-07',400
insert INTO @t SELECT 'e','2012-01-09',500
insert INTO @t SELECT 'f','2012-01-12',600

SELECT  Name,datee,SUM (val) 
from @t GROUP BY NAME ,datee 
Run Code Online (Sandbox Code Playgroud)

目前的结果是:

在此输入图像描述

但我需要sum在最后添加.所以我尝试使用汇总:

 SELECT  Name,datee,SUM (val) 
    from @t GROUP BY NAME ,datee  with ROLLUP
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但我只需要最后一笔总和.我不需要报告中的内容 sum's

那么如何获得欲望的结果呢?

(我不能改变 group by条款因为其他人也需要它,我只想在最后添加和/不汇总).

sql online在这里

Iva*_*n G 33

有可能GROUPING SETS,试试这个:

SELECT  Name,datee,SUM (val) 
FROM    @t 
GROUP BY 
        GROUPING SETS((NAME ,datee), ())
Run Code Online (Sandbox Code Playgroud)

SQL小提琴

  • @RoyiNamir - 我遇到的最好的解释是Itzik Ben Gan [第1部分](http://www.sqlmag.com/article/tsql3/grouping-sets-part-1-96805)和[第2部分]( http://www.sqlmag.com/article/tsql3/grouping-sets-part-2-97007) (3认同)
  • 您还可以在"MCTS Self-Paced Training Kit(考试70-433):Microsoft®SQLServer®2008数据库开发"中找到一些示例和解释,但它是一本印刷书籍. (2认同)

And*_*y M 10

它也可以ROLLUP():

SELECT
  Name,
  datee,
  SUM (val) 
FROM @t 
GROUP BY 
  ROLLUP((NAME, datee))
;
Run Code Online (Sandbox Code Playgroud)

WITH ROLLUP,以及WITH CUBE,非标准和弃用.(请参阅手册中的非ISO标准语法GROUP BY.)

应该注意的ROLLUP()是,SQL Server 2005中的兼容级别低于90,而SQL Server 2008+中的兼容级别低于100,而GROUPING SETS()不是.