3

我有一个简单的查询,它返回两列ProjectNameAmount. 我需要的是一个动态行,作为最后一行,Grand Total它的图形。

Project       GRN Value
Prj 1           100000
Prj 2           200000
Prj 3           400000
------------------------
Grand Total     700000

Grand Total应该是在末尾自动嵌入的动态行,具有GRN值的总和。

4

3 回答 3

3

要获得总计行,您可以使用group by rollup(Project),在此总计行中重命名项目使用grouping()

select
    case
        when grouping(Project) = 1 then 'Grand Total'
        else Project
    end as Project,
    sum([GRN Value]) as [GRN Value]
from Table1
group by rollup(Project)

sql fiddle demo

于 2013-08-20T11:25:43.013 回答
3

看来您需要在 GROUP BY 之后使用 WITH ROLLUP

SELECT     Project,
           SUM(Value)
FROM       Table
GROUP BY   Project
WITH ROLLUP

在这里检查

于 2013-08-20T11:16:21.800 回答
2

是的,您可以通过一个简单的方法来实现这一点,UNION因此将计算的 SQL 语句SUM附加到您的结果集中:

SELECT Project, GRN_Value 
FROM [YOUR_TABLE]
UNION ALL
SELECT 'Grand Total', SUM(GRN_Value)
FROM [YOUR_TABLE]

或者,您可以使用此处ROLLUP详述的功能。

于 2013-08-20T11:17:11.070 回答