2016-07-06 6 views
0

다음과 같은 테이블이 있습니다.SQL Server 2008 R2 실행 합계

row_noproduct은 PK입니다.

+--------+---------+-------+-----+---------------+---------+ 
| row_no | Product | value | qoh | prev_week_qty | cum_qty | 
+--------+---------+-------+-----+---------------+---------+ 
| 1  | pr:1 | 101 | 101 | NULL   | NULL | 
| 2  | pr:1 | 201 | 101 | NULL   | 100  | 
| 3  | pr:1 | 101 | 101 | NULL   | NULL | 
| 4  | pr:1 | 101 | 101 | NULL   | NULL | 
| 5  | pr:1 | 183 | 101 | NULL   | -18  | 
| 6  | pr:1 | 101 | 101 | NULL   | NULL | 
| 7  | pr:1 | 101 | 101 | NULL   | NULL | 
| 8  | pr:1 | 149 | 101 | NULL   | -34  | 
| 9  | pr:1 | 131 | 101 | NULL   | -18  | 
| 10  | pr:1 | 101 | 101 | NULL   | NULL | 
| 11  | pr:1 | 113 | 101 | NULL   | -18  | 
| 12  | pr:1 | 101 | 101 | NULL   | NUll | 
| 13  | pr:1 | 101 | 101 | NULL   | NUll | 
| 14  | pr:1 | 101 | 101 | NULL   | NUll | 
| 17  | pr:1 | 101 | 101 | NULL   | NULL | 
+--------+---------+-------+-----+---------------+---------+ 

이 기능을 구현하는 방법은 없습니까?

로직 : 값 = QOH cum_qty + + prev_week_qty 예를 들어

: row_no = 1 용

  • , 값 = QOH + + prev_week_qty cum_qty. row_no = 2 QOH = (row_no = 1.value) 용
  • 다음 QOH + + prev_week_qty cum_qty row_no = 3 QOH = (row_no = 2.value) 용
  • 다음 QOH + + prev_week_qty cum_qty

예상 출력 :

+--------+---------+-------+-----+---------------+---------+ 
| row_no | Product | value | qoh | prev_week_qty | cum_qty | 
+--------+---------+-------+-----+---------------+---------+ 
| 1  | pr:1 | 101 | 101 | NULL   | NULL | 
| 2  | pr:1 | 201 | 101 | NULL   | 100  | 
| 3  | pr:1 | 201 | 101 | NULL   | NULL | 
| 4  | pr:1 | 201 | 101 | NULL   | NULL | 
| 5  | pr:1 | 183 | 101 | NULL   | -18  | 
| 6  | pr:1 | 183 | 101 | NULL   | NULL | 
| 7  | pr:1 | 183 | 101 | NULL   | NULL | 
| 8  | pr:1 | 149 | 101 | NULL   | -34  | 
| 9  | pr:1 | 131 | 101 | NULL   | -18  | 
| 10  | pr:1 | 131 | 101 | NULL   | NULL | 
| 11  | pr:1 | 113 | 101 | NULL   | -18  | 
| 12  | pr:1 | 113 | 101 | NULL   | NUll | 
| 13  | pr:1 | 113 | 101 | NULL   | NUll | 
| 14  | pr:1 | 113 | 101 | NULL   | NUll | 
| 17  | pr:1 | 101 | 101 | NULL   | NULL | 
+--------+---------+-------+-----+---------------+---------+ 

내가 SQL 서버 2008 R2를 사용하고 있습니다.

+0

나는 '논리 값'열을 계산할 논리를 얻지 못했습니다. –

+0

@Prdp 논리를 편집했습니다. –

답변

1

SUM()OVER(ORDER BY) 트릭을 사용하면 이전 버전을 사용하고 있습니다. 이 같은 것을 시도하십시오

SELECT * 
FROM Yourtable A 
     CROSS apply (SELECT Sum(Isnull([cum_qty], 0) 
           + Isnull(prev_week_qty, 0) + CASE WHEN row_no = 1 THEN qoh ELSE 0 END) su 
        FROM Yourtable B 
        WHERE a.[row_no] >= b.[row_no]) cs 
+0

정확히 내가 무엇을 찾고 있었는지 ... 고맙습니다 @Prdp –