根据另一列获取列的总和

时间:2014-08-25 17:31:08

标签: sql sql-server-2008

我在select语句中有以下前三列数据,我正在尝试添加" total"柱:

Customer   ReportingCategory    SumOfProfit    Total
ABC          1                     10           60
ABC          2                     25           60
ABC          4                     25           60

现在,我基本上选择Customer,ReportingCategory和SumOfProfit,并按Customer,ReportingCategory和SumofProfit求和(这是从子查询中选择)。

我想添加总列,就像上面一样。因此,它将客户的整个利润总和相加,但仍保留报告类别及其各自的利润总和。这可能吗?

3 个答案:

答案 0 :(得分:1)

您可以使用TotalOVER()字段添加到现有查询中:

SUM(Profit) OVER() AS Total

如果这需要是每个客户或其他一组字段的总数,您将添加PARTITION BY

SUM(Profit) OVER(PARTITION BY Customer) AS Total

您还可以使用子查询和其他聚合。

答案 1 :(得分:1)

尝试使用windowing function

select your_original_columns, 
sum(SumOfProfit) OVER(PARTITION BY Customer) AS 'Total'
...

现在,你可能需要你的子查询,而不是SumOfProfit,但是窗口函数的想法是返回一个不同范围的聚合,然后是你的组,这就是你想要的。

答案 2 :(得分:0)

select customer, ReportingCategory, SumOfProfit , sum(total)
from       (
YOUR EXISTING SELECT
)

这样可行,如果没有,请在帖子中添加当前的选择语句。