我的目标是汇总特定名称和特定时间段内的值。我有一列名称[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
注意:行的顺序必须保持不变。
答案 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