2017-12-07 5 views
1

인덱스 열 (현재 임의의 숫자 임)이 순차적으로 번호가 1000부터 시작하여 순차적으로 번호가 매겨 지도록 테이블의 열을 업데이트하려고합니다. 10, 그룹이 변경 될 때마다이 순서가 다시 시작됩니다.다른 열 값에 따라 변경되는 점진적으로 순차 화 된 값으로 열을 업데이트하는 방법

PARTITION으로 ROWNUMBER()를 시도하고 SEQUENCE를 정의하려고 시도했지만 찾고있는 결과를 얻지 못하는 것 같습니다.

표가 원하는 것은 1

ID Group Index 
1   A  1 
2   A  2 
3   B  3 
4   B  4 
5   B  5 
6   C  6 
7   D  7 

: 표 1

ID Group  Index 
1   A  1000 
2   A  1010 
3   B  1000 
4   B  1010 
5   B  1020 
6   C  1000 
7   D  1000 

답변

1

당신은 몇 가지 산술 row_number()을 사용할 수 있습니다 : groupindex는 SQL 예약입니다

select t.*, 
     990 + 10 * row_number() over (partition by group order by id) as index 
from t; 

하는 것으로 단어, 그래서 그들은 진짜 열 이름이 잘못되었습니다.

+0

@Chelsea 참고 : 위 공식은 운영자 우선 순위에 따라 계산됩니다 .... https : //docs.microsoft.com/en-us/sql/t-sql/language-elements/operator-precedence- 트랜잭션 - SQL –

관련 문제