여기 저기 검색하다 글이 없어서 이렇게 질문을 올립니다...
먼저 Table AA 는
aNum |
aName |
aSum |
1 |
aa |
0 |
2 |
bb |
0 |
3 |
cc |
0 |
그리고 Table BB는
aNum |
bVal |
bDate |
1 |
100 |
2003-01-10 |
1 |
200 |
2003-02-10 |
1 |
300 |
2003-03-10 |
1 |
100 |
2003-04-10 |
2 |
200 |
2003-01-10 |
2 |
300 |
2003-02-10 |
2 |
400 |
2003-03-10 |
2 |
100 |
2003-04-10 |
2 |
200 |
2003-05-10 |
... |
... |
... |
보시면 아시겠지만...
두번째 테이블에서 가져와야 할 값은 bDate 기준으로 bVal 가 꾸준히 증가하다가 다음 값이 감소할 경우
그 차이 값을 AA Table의 aSum에 누적시키는 것입니다...
게다가 두번째 테이블의 값이 1은 4행, 2는 5행 이런 식으로 일정하지 않습니다.
일단 제가 한 방법은 AA 테이블에 aa 를 추가한 다음
update를 써서
bVal의 값을 aa에 집어넣고 다음 bVal의 값과 비교해서 크면 집어넣고
작으면 그 차액을 aSum에 누적시키는 식으로 햇씁니다..
값을 누적시킨 다음 합계를 내봤는데...
문제는 돌릴 때마다 합계 값이 틀려진다는 것입니다...
제 추측으로는 아마도 두번째 테이블의 날짜가 낮은 날짜순으로 들어가지 않고...
무작위로 랜덤하게 들어가다 보니... 무조건 다음 행의 값이 자신보다 작게 되면 그 차액을 누적시키기는
것으로 생각이 됩니다...
그렇다고 기준을 날짜로 맞추어도 문제가 생기는 것으로 생각이 됩니다...
Update AA Set aa = BB.bVal
From AA, BB where AA.aNum = BB.aNum and AA.aa < BB.bVal
Update AA Set aSum = aSum + (aa - BB.bVal) , aa = BB.bVal From AA, BB where AA.aNum = BB.aNum and AA.aa > BB.bVal
이런식으로 구한 후에
Select Sum(aSum)
From AA
를 했더니 할 때마다 값이 틀려지는 것입니다...
실력도 없으면서 소스를 올리는 것이 너무 부끄럽지만...
도움을 바라는 마음에 올립니다..
고수님들의 가르침을 부탁드립니다.... |