汇总特定时期内特定名称的值?

时间:2019-09-06 16:39:42

标签: sql sql-server sum

我的目标是汇总特定名称和特定时间段内的值。我有一列名称[name]),一列我想总结的整数值([Values])和另一列整数值[[Day])。我想总结每天按名称分组的值。

因此,例如,如果在第1天有一个名称为“ Chris”的值4,而在第3天还有另一个条目“ Chris”的值为2,我想显示第_1天(4)及之后的chris的总和天_2(4 + 2 = 6)。

我已经有了一些有效的代码(请参阅下文),但该代码仅汇总了从第1天到第X天的每个值。我找不到能够对特定时间段内的值求和的代码。时间。可以说在第27天有一个条目“ Ralph”。

我的原始代码汇总了直到27天之前Ralph的每个值,但是现在我想汇总特定时间范围内的值,例如,我想汇总最近20天中列中每个名称的每个值。这怎么可能?

select name, day, value, name2, value2,
sum(value) over (partition by name order by day) SumValue,
sum(value2) over (partition by name2 order by day) SumValue2
from (select *, row_number() over (order by day) rn from tablename) as t
order by rn

注意:行的顺序必须保持不变。

1 个答案:

答案 0 :(得分:0)

在以下脚本中尝试此操作-

WITH CTE AS
(
    SELECT Name,Day,SUM(Value) S_Val
    FROM your_table
    GROUP BY Name,Day
)

SELECT A.Name,A.Day,
(
    SELECT SUM(B.S_Val) 
    FROM CTE B 
    WHERE B.Name = A.Name 
    AND B.Day <= A.Day
) AS Running_Sum
FROM CTE A
ORDER BY A.Name,A.Day