2014-10-24 1 views
1

에서 다른 행의 계산과 데이터를 선택하는 방법 나의 표는 SQL

itemcode in out sum value datetime  PP 
-------|---|---|-----------|-----------|--------- 
A1234 | 1 | 0 | 100  |04/03/2009 | E01 
A1234 | 0 | 1 | -100  |05/03/2009 | E01  
A1234 | 1 | 0 | 100  |06/03/2009 | E01 
A1234 | 0 | 1 | -100  |07/03/2009 | E01 
A1234 | 1 | 0 | 100  |08/03/2009 | E01 
A1234 | 9 | 0 | 900  |09/03/2009 | S01 
A1234 | 0 | 3 | -300  |10/03/2009 | S01 
A1234 | 8 | 0 | 800  |11/03/2009 | S01 
A1235 | 9 | 0 | 900  |12/03/2009 | E01 
A1235 | 0 | 2 | -200  |13/03/2009 | E01 
A1235 | 0 | 3 | -300  |14/03/2009 | E01 
A1235 | 8 | 0 | 800  |15/03/2009 | S01 

결과가 될 것입니다 :

itemcode는 합계 값 날짜 PP
남아 ------- | - ----- | ----------- | ----------- | ----

A1234 | 1 | 100 | 07/03/2009 | E01
A1234 | 6 | 600 | 09/03/2009 | S01
A1234 | 8 | 800 | 11/03/2009 | S01

A1235 | 4 | 400 | 12/03/2009 | E01

A1235 | 8 | 800 | 15/03/2009 | S01

다른 행을 계산하고 마지막 구매를 늦게 찾는 방법. itemcode하여 그룹 및 PP

감사

+0

사용하고있는 데이터베이스? –

+0

은 # 열의 기본 키이며 자동 증분입니까? –

+0

데이터베이스 : mssql 2008 및 #은 자동 증분 –

답변

0

우고,

아래 코드를 참조하십시오. 당신은 테이블 이름을주지 않았기 때문에 나는 그것을 @a로 명명했습니다. 모든 레코드에 대해 동일한 항목 항목 코드는 사용하지 않았습니다.

DECLARE @a TABLE 
(id INT IDENTITY(1,1), inp int, out INT,SumV int,dt DATE,PP VARCHAR(3)) 
INSERT INTO @a VALUES 
(1,0,100,'2014-01-01' ,'E01'), 
(0,1,-100,'2014-01-02' ,'E01'), 
(7,0,700,'2014-01-03' ,'E01'), 
(0,5,-500,'2014-01-04' ,'E01'), 
(6,0,600,'2014-01-05' ,'E01'), 
(0,7,-700,'2014-01-06' ,'S01'), 
(9,0,900,'2014-01-07' ,'S01'), 
(0,3,-300,'2014-01-08' ,'S01') 

SELECT * FROM @a 

SELECT ROW_NUMBER() OVER (ORDER BY A.dt) [#], 
     A.id, 
     A.dt [datetime], 
     SUM(B.inp) - SUM(B.out) [Remain], 
     SUM(B.SumV) [Sum value], 
     A.PP 
FROM @a A 
JOIN @a B ON B.id <= A.id 
WHERE A.inp = 0 
GROUP BY A.id,A.dt,A.pp 
ORDER BY A.id 

결과 :

enter image description here

+0

나는 전에 ** B.id ** ** <** ** ** A.id **'JOIN' 상태를 보지 못했습니다. 어떻게 그 결과물에서 그걸 얻었습니까? –

+0

@RaduGheorghiu, 우리는 ON 조건에서 조건을 부여 할 수 있습니다. 이것은 T-SQL입니다. –

+0

그래, 고마워. –