제목과 같이, 기존에 만들어둔 테이블에 있는 특정 열 A, B의 오름차순대로 자동으로 ID 매기는 필드를 추가하려고 하는데,
테이블 디자이너에는 아무리 찾아봐도 그런 기능이 없는 것 같습니다.
테이블 디자이너에서 그냥 열을 삽입하니, 원하는 바와 같이 정렬된 순서대로 ID 필드의 값이 매겨지질 않습니다.
좀 도와 주십시오!!!! ㅠ.ㅠ
Comment 8
-
디비디비
2014.07.25 11:01
말씀해 주신 대로 다음과 같이, update 쿼리를 만들었는데....
update tbl_Config
set VCID = RANK() over (Order by packet_time,configseq ASC)
아래와 같은 에러 메시지가 뜹니다....
Windowed functions can only appear in the SELECT or ORDER BY clauses.
혹 어떻게 해야 되는지요? ㅠ..ㅠ
-
SELECT 한 결과와 JOIN해서 UPDATE하세요.
-
Harlem
2014.07.25 11:33
update tbl_Config
set VCID = b.rnum
FROM tbl_Config a
INNER JOIN
(SELECT key,RANK() over (Order by packet_time,configseq ASC) rnum
FROM tbl_Config
) b ON a.key = b.key
-
디비디비
2014.07.25 12:03
계속 죄송합니다. 아래와 같은 메시지가 나오면서, 진행이 안됩니다.
Incorrect syntax near the keyword 'key'.
-
디비디비
2014.07.25 12:15
이렇게 하니, 되는 것 같습니다.
작업 1) 테이블 디자이너에서 VCID란 열과 key1 (key는 예약된 용어인 것 같아) 이라는 열을 생성
작업 2) VCID는 null 허용인 상태로 해서 두고, key1은 identity 열로 만들어, 자동으로 ID를 매기도록 함
작업 3) 위에서 알켜주신 내용의 쿼리를 돌림.
작업 4) VCID에 reasonable한 ID가 순차적으로 매겨져 있음
작업 5) 테이블 디자이너에서 key1이라는 열 삭제
작업 6) 테이블 디자이너에서 VCID열의 identity 속성을 YES로 수정
혹, 제 작업 sequence에 문제가 있을런지요? if no... 넘 감사합니다. 전 언제나 이런 경지에 이를 수 있을지....ㅠ.ㅠ
-
Harlem
2014.07.25 12:20
key는 그 테이블의 PK값을 의미한거구요 제가 컬럼명을 모르니..
혹 그 테이블의 키값이 없는건지요?
-
디비디비
2014.07.25 12:43
key로 잡을 만한 중복되지 않은 데이터가 없기 때문에.... 예, key는 설정해 두지 않았습니다.
일단 컬럼을 하나 만들고
RANK()함수등을 이용해서 UPDATE 하세요.