2017-12-18 9 views
0

나는 간단한 쿼리가 있습니다합계 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 재정 주, 또는 주 2 주 만 합계 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 년에는 사용할 수 없었습니다.

+2

어떻게 합계 987 행 7을 얻었습니까? – ttwis

+0

@ttwis typo error, 지금 편집하십시오 – PeterH

+0

이 게시물을 본 적이 있습니까? https://stackoverflow.com/questions/860966/calculate-a-running-total-in-sql-server – Alp

답변

2

쉬운 방법은이 간단한 경우에 대해 자체 표가 아닌 equijoin입니다. 수 있습니다 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 XXI 세기 친화적 여부 될 수있다, CTE, 파티션과 계급을 처리하는 것입니다. 당신이 재미 있다면 그것에 대해 검색하십시오.

+0

t1.a-6과 t1 사이의 t2.a에서 on 절 사이에 a와 결합을 본 적이 없음 .a ", 끝내 줘요 & 고마워요. 고마워요. – PeterH

+0

사람들이 믿지 않을 것들을 보았습니다. 공격은 Orion의 어깨에서 발사됩니다. 나는 Tannhäuser Gate 근처의 어둠 속에서 C-beams 반짝임을 보았다. 서브 쿼리를 서브 쿼리하십시오. 가짜 동등한 사람. 첫 번째 정규 형식 데이터베이스가 아닙니다. 비가 오면 눈물처럼 시간이 지나면 모든 순간이 사라집니다. 죽을 시간. – danihp