总和2008

我有一个简单的查询:总和2008

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

我想在第三列,总和过去6周财的,或第二周周刚和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年没有提供,有什么建议吗?

回答:

对于这种简单的情况,简单的方法是自我表非等值连接。让supose t是你的桌子和a是FiscalWeek:

SQL Fiddle

MS SQL服务器2014架构设置:

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);

查询1:

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:

| a | t |  | 

|----|----|-----|

| 1 | 10 | 10 |

| 2 | 11 | 21 |

| 3 | 12 | 33 |

| 4 | 13 | 46 |

| 5 | 14 | 60 |

| 6 | 15 | 75 |

| 7 | 16 | 91 |

| 8 | 17 | 98 |

| 9 | 18 | 105 |

| 10 | 19 | 112 |

| 11 | 20 | 119 |

| 12 | 10 | 115 |

硬的做法,可能是更多的SQL二十一世纪的友好与否,是应对CTE,分区和队伍建设。如果你有兴趣,可以搜索一下。

以上是 总和2008 的全部内容, 来源链接: utcz.com/qa/262426.html

回到顶部