SQL SERVER 2008中前6行的总和

问题描述 投票:0回答:1

我有一个简单的查询:

Select
fiscalweek, 4171
From table

我按照财政周的顺序得到结果:

FiscalWeek  4171
1           691
2           746
3           650
4           625
5           788
6           581
7           597
8           772
9           777

我想在第三列,前六个财政周的总和,或第二周,只是第1周和第2周的总和,

所以输出将是:

FiscalWeek  4171    Sum
1           691     691
2           746     1437
3           650     2087
4           625     2712
5           788     7671
6           581     4081
7           597     3393
8           772     4013
9           777     4140

我曾尝试过使用rows unbounded preceeding,但这在2008年没有,有什么建议吗?

sql sql-server sql-server-2008 cumulative-sum
1个回答
2
投票

对于这个简单的情况,简单的方法是自动表非等值。让我们假设t是你的桌子,qazxsw poi是财政周:

a

MS SQL Server 2014架构设置:

SQL Fiddle

查询1:

create table t ( a int, t int);
insert into t values 
(1,10),
(2,11),
(3,12),
(4,13),
(5,14),
(6,15),
(7,16),
(8,17),
(9,18),
(10,19),
(11,20),
(12,10);

select t1.a, t1.t, sum(t2.t) from t t1 inner join t t2 on t2.a between t1.a-6 and t1.a --self non equijoin taking 6 prev. group by t1.a, t1.t order by t1.a

Results

硬方法,可能是更多的sql XXI世纪友好与否,是处理CTE,分区和排名。如果你感兴趣,请搜索它。

© www.soinside.com 2019 - 2024. All rights reserved.