2012-12-10 4 views
-4

SQL Server 2008 R2를 사용하고 있습니다. 나는 테이블을 가지고 DESTI중복 레코드 용 SQL 솔루션

CODE_DESTI ENTERPRISE 
----------------------- 
1   xx 
1   yy 
12   pp 
12   oo 
12   ll 

CODE_DESTI ENTERPRISE 
----------------------- 
11   xx 
12   yy 
121   pp 
122   oo 
123   ll 
+0

어떤 RDBMS를 당신이 사용하고 있습니까? 번호를 추가해도 기존 레코드와 충돌하지 않는다는 것을 어떻게 알 수 있습니까? (사실 당신의 예에서는'12'가 중복 제거 될 필요가 있다는 것을 제외하고는) –

+0

SQL 2008 R2를 사용하고 있습니다 – user609511

+0

사용 시나리오가 명확하지 않습니다. DESTI 테이블에 다섯 개의 레코드가 있고 중복 행을 삽입하려고하면 다른 CODE_DESTI 값을 사용하여 행을 삽입 할 수 있습니까? – neontapir

답변

1

당신은 창 기능을 사용하여이 작업을 수행 할 수있는 후 나는 자동 증가와 중복 CODE_DESTI 1 수를 업데이트 할 수 있습니다 방법 :

SELECT 
    CODE_DESTI + CAST(RANK() AS varchar) OVER (PARTITION BY CODE_DESTI ORDER BY ENTERPRISE) AS CODE_DESTI, 
    ENTERPRISE 
FROM DESTI 
+0

'||'는 표준 SQL이지만 문자열 연결에'+'를 사용하는 MS SQL Server에서 지원하지 않습니다 (그 이유 때문에 캐스트도 필요합니다 문자열 유형으로). – hvd

+0

@hvd : 감사합니다. 그것을 알지 못했고, 나는'||'도 지원되었다고 생각했다. 어쨌든 나는 그것을 바꿨지 만 테이블 정의가 없기 때문에 캐스트를 끈 상태로 남겨 둘 것이다. 그것은 이미 문자열일지도 모른다.) – Wolph

+0

'RANK()'의 결과는 분명하지 않을 것이다. – hvd