안녕하세요?
매주 테이블을 업데이트 하고 있습니다. 매주 최신 한달의 값으로 업데이트를 합니다. 테이블의 내용중에 지난주에 있는 내용과 이번주의 내용(PK)이 겹치면, 이번주의 값으로 overwright 해야 합니다. PK: CanisterId
1. 지난주 테이블
|
2. 이번주 테이블
|
3. 최종 원하는 테이블
|
매주 자료를 업데이트 하는데 지난주에도 있고 이번주에도 있으면 이번주 것으로 오버롸이트 하는 것이 주 입니다.
감사합니다.
지난주 값, [테이블 1] 이 존재합니다. [테이블 2]는 쿼리를 통해서 가지고 옵니다. 원하는 바는 매주 쿼리를 사용하여 [테이블 1]의 값을 원하는 값 [테이블 3]으로 업데이트 하는 것입니다.
INSERT INTO [테이블 1]
Select *
from [테이블 2]
와 같이 사용하려고 했는데, PK 값이 중복되어 변경되지 않네요. 현재는 PK를 풀고 중복해서 사용하고 있습니다.
하기와 같이 다시 쿼리로 테이블을 쓰고 있습니다.
Select [CanisterId] ,[CreatedDtm] ,[CanisterBuildNum] ,[reasonEnglish], a.rownumber FROM(SELECT [CanisterId] ,[CreatedDtm] ,[CanisterBuildNum] ,[reasonEnglish], ROW_number() over(Partition by canisterId order by createdDtm desc) rownumber FROM [ResearchDB].[dbo].[blackListCanister] ) a where rownumber =1 order by canisterid
ID 는 항상 16개 고정인 것 같네요?
Insert 대신 ID 를 이용해 Update 를 해도 되구요.
새로운 ID가 들어올 가능성이 있다면? ID 를 이용해 Delete 후 Insert 해도 되겠네요.
UPDATE a SET a.CreatedDtm = b.CreatedDtm , a.CanisterBuildNum = b.CanisterBuildNum , a.reasonEnglish = b.reasonEnglish FROM ResearchDB.dbo.blackListCanister a -- 지난주 테이블 INNER JOIN (SELECT ...) b -- 이번주 쿼리 ON a.canisterId = b.canisterId ;