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条款因为其他人也需要它,我只想在最后添加和/不汇总).
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)
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()不是.