我正在尝试根据记录组创建一个运行总计。我的数据如下所示
Country | Genre | Month | Amt
A X 1 5
A X 2 3
B X 1 8
B Y 1 10
A X 1 12
我想对Amt进行一笔运行总和,按每个国家/地区的独特类型和月份分组。所以我想要的输出是
Country | Genre | Month | Amt | RunAmt
A X 1 5 5
A X 2 3 3
B X 1 8 8
B Y 1 10 10
A X 1 12 17
由于国家A先前已发生Genre = X和Month = 1。
我的尝试是sum(amt) over (partition by country, genre, month order by month rows between unbounded preceding and current row)
,但它似乎在每一行都有一笔运行金额,而不是按国家/地区的唯一出现次数。任何帮助将不胜感激。
答案 0 :(得分:3)
试试这个
SELECT *,
Sum(amt)
OVER(
partition BY country, genre, month
ORDER BY amt) as RunAmt
FROM ( VALUES ('A','X',1,5),
('A','X',2,3),
('B','X',1,8),
('B','Y',1,10),
('A','X',1,12) )tc(Country, Genre, Month, Amt)
答案 1 :(得分:1)
试试这个..
select *,
sum(amt) over
(
partition by country, Genre, month order by amt
) as RunAmt
from TableName
以下是我尝试过的SQLFiddle。