본문 바로가기

Programming/mssql2005

키를 변경하기 위해 중복된 데이터를 삭제 하는 SQL

키를 변경하기 위해 중복된 데이터를 삭제 하는 SQL

원래는 LRD, DATE는 유일해야 하나 버그로 인하여 중복된 데이터가 들어간 경우 사용

SELECT LRD, DATE FROM AUTO_RPT
GROUP BY LRD, DATE
HAVING COUNT(*) > 1

-- 결과 확인 후 아이디 기록

DELETE FROM AUTO_RPT
WHERE LRD = '0' AND DATE IN
(SELECT DATE FROM AUTO_RPT
GROUP BY LRD, DATE
HAVING COUNT(*) > 1

-- 기존의 키 삭제
ALTER TABLE dbo.AUTO_RPT
DROP CONSTRAINT PK_AUTO_RPT
GO

-- 새로운 키 생성
ALTER TABLE dbo.AUTO_RPT ADD CONSTRAINT
 PK_AUTO_RPT PRIMARY KEY CLUSTERED
 (
 LRD,
 DATE
 ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO