You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为SQL Server 2014查询结果添加Grand Total总计列?

实现每行显示总计列的几种方法

嘿,这个需求很容易搞定,在SQL Server 2014里有几种实用的方法可以实现你要的效果,我给你列两个最常用的:

方法1:使用窗口函数(最简洁)

窗口函数SUM() OVER()可以直接计算整个结果集的总和,并且把这个值附加到每一行,完全不需要额外的关联操作,代码如下:

USE MyDatabase;
SELECT 
    Market,
    SUM([RN]) AS [RN],
    SUM(SUM([RN])) OVER() AS [Grand Total] -- 嵌套SUM是因为外层是聚合后的分组结果
FROM [View1]
GROUP BY Market;

解释一下:外层的SUM([RN])是按Market分组后的小计,SUM(SUM([RN])) OVER()则是把所有分组的小计再求和,得到全局总计,并且每行都会显示这个值。

方法2:使用子查询+交叉关联

如果你更习惯用传统的关联方式,也可以先单独计算出总计,再通过CROSS JOIN把总计和原查询的结果关联起来,代码如下:

USE MyDatabase;
WITH MarketTotals AS (
    SELECT 
        Market,
        SUM([RN]) AS [RN]
    FROM [View1]
    GROUP BY Market
),
GrandTotal AS (
    SELECT SUM([RN]) AS [Grand Total]
    FROM MarketTotals
)
SELECT 
    mt.Market,
    mt.[RN],
    gt.[Grand Total]
FROM MarketTotals mt
CROSS JOIN GrandTotal gt;

这种方法先通过CTE计算出每个Market的小计,再单独计算全局总计,最后把两个结果集交叉连接,让每行都带上总计值。

这两种方法都能得到你想要的结果:

MarketRNGrand Total
UK100525
FRANCE125525
GERMANY300525

内容的提问来源于stack exchange,提问作者user3115933

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:22:40