在结果集的末尾嵌入动态行

时间:2013-08-20 11:13:30

标签: sql sql-server sql-server-2008 tsql

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

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

Grand Total应该是一个动态行,最后会自动嵌入GRN值的总和。

3 个答案:

答案 0 :(得分:3)

在GROUP BY

之后,您似乎需要WITH ROLLUP
SELECT     Project,
           SUM(Value)
FROM       Table
GROUP BY   Project
WITH ROLLUP

Check here

答案 1 :(得分: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

答案 2 :(得分:2)

是的,您可以使用简单的UNION来实现此目的,因此计算SUM的SQL语句将附加到结果集中:

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

您可以使用详细hereROLLUP功能。