SQL Sum在同一查询中累积和非累积

时间:2011-06-20 08:49:12

标签: sql-server-2008 sum

您好我想知道是否有办法在同一查询中获得累计和非累积总数。我有一个包含以下字段的表: 部门,SalesPerson,fin_month,活动,成本

我想要的是两笔款项,一笔可以为销售人员提供每月总额,另一笔可以提供一年至今的总金额。我遇到了设置两个不同标准的问题,以使其发挥作用。

非常感谢

2 个答案:

答案 0 :(得分:0)

这样的事情有帮助吗?

SELECT 
* 
FROM
(
SELECT 
Department, SalesPerson
,   SUM(fin_month) SalesPerson_Sum
FROM 
[TABLE_NAME]
GROUP BY Department, SalesPerson
) a 
INNER JOIN 
(
SELECT 
    Department
, SUM(fin_month) AS Department_Sum
    FROM 
[TABLE_NAME]
GROuP BY 
    Department
) b
ON 
a.Department = b.Department

答案 1 :(得分:0)

此解决方案使用CTEsrecursionranking获取每fin_monthSalesPerson的累计总数,基于Department相应的月度总数。

;WITH
  monthlytotals AS (
    SELECT
      Department,
      SalesPerson,
      fin_month,
      MonthlyTotal = SUM(cost),
      rn = ROW_NUMBER() OVER (PARTITION BY Department, SalesPerson
                                  ORDER BY fin_month)
    FROM atable
    GROUP BY Department, SalesPerson, fin_month
  ),
  alltotals AS (
    SELECT
      Department,
      SalesPerson,
      fin_month,
      MonthlyTotal,
      CumulativeTotal = MonthlyTotal,
      rn
    FROM monthlytotals
    WHERE rn = 1
    UNION ALL
    SELECT
      m.Department,
      m.SalesPerson,
      m.fin_month,
      m.MonthlyTotal,
      CumulativeTotal = a.CumulativeTotals + m.MonthlyTotal,
      m.rn
    FROM monthlytotals m
      INNER JOIN alltotals a
         ON m.Department = a.Department
        AND m.SalesPerson = a.SalesPerson
        AND m.rn = a.rn + 1
  )
SELECT
  Department,
  SalesPerson,
  fin_month,
  MonthlyTotal,
  CumulativeTotal
FROM alltotals
相关问题