까지 두 개의 열을 기반으로 값을 감소 나는 다음과 같은 데이터 세트 (단지 샘플)이 있습니다SQL 0
표 :
ID MAX AMT SORTED
1 20 0 1
1 30 0 2
1 40 0 3
1 50 0 4
2 0 0 1
2 30 0 2
2 40 0 3
2 40 0 4
...
표 2을 :
ID AMT
1 75
2 70
...
이 규칙을 사용하여 Table1.AMT
을 Table2.AMT
에서 업데이트해야합니다 :
Table1
및Table2
는Table2.AMT - previous record AMT
여전히 위의 규칙을 사용하여 다음 행 업데이트Table1.AMT
에 다음 ...MAX
- 다음
Table2.AMT >= Table1.MAX
경우Table1.AMT = Table1.MAX
보다 큰 값을 물을 수 없습니다ID
Table1.AMT
에 연결된다.
그래서 예상되는 출력은
ID MAX AMT SORTED
1 20 20 1
1 30 30 2
1 40 25 3
1 50 0 4
2 0 0 1
2 30 30 2
2 40 40 3
2 40 0 4
...
이 어떻게 그 달성 할 수 있을까?
난Table1.MAX
의 응집
SUM()
와 임시 테이블을 생성하고, 기준으로서
Table1.AMT
(만약
SUM(MAX) < Table2.AMT
Table1.AMT = previous records SUM(MAX)
다음
Table1.AMT = Table1.MAX
다른)을 업데이트하는 것으로하여 생각.
하지만 임시 테이블없이 완료 할 수 있습니까? (슬프게도 내 작업 환경에서 함수와 프로 시저를 만들 수 없습니다.)
질문은 'SUM()'기능이 생길 때까지 아주 분명했습니다. 두 번째 규칙은 실제로 "Table1.AMT는 모든 Table1.MAX 값의 합보다 큰 값을 보유 할 수 없습니다"라는 의미입니다. 또는 "Table1.AMT는 모든 Table2.AMT 값의 합보다 큰 값을 보유 할 수 없습니다"? – fancyPants
db 엔진은 무엇입니까? –
오라클 10g 및 표 1.AMT는 행 MAX보다 클 수 없습니다. 표 1 SUM AMT = 표 2 AMT –