2012-10-16 2 views
0

계좌 번호가 이미 기존 데이터에 있는지 여부에 따라 데이터를 업데이트하거나 삽입하려고합니다. 첫째 I이업데이트 또는 삽입

drop table #test1 
select a.*, B.Delq_Sep12, b.Bal_Sep12, b.Queue_Sep12 
into #test1 
from pcd1 a 
left join #pcd_sep12 b on (a.ACCOUNT_NUMBER = B.account_number) 

그럼 I는 그 계정 번호 # pcd_sep12에서 TEST1

로 (위에서 생성) TEST1 아닌 모든 레코드를 추가하여 테이블에 이미 acocunt 번호 것과 새로운 변수를 추가
INSERT #test1 
SELECT * FROM #pcd_sep12 WHERE account_number NOT IN(SELECT account_number FROM #test1) 

오류가 발생합니다. 열 이름 또는 제공된 값의 수가 테이블 정의와 일치하지 않습니다.

나는 그 분야의 수가 같지 않기 때문에 그 사실을 깨달았지만, 이것에 대한 방법이 있습니까?

+0

에서 수 없지만 원래 문이 말한다 INSERT 또는 UPDATE를 시도하고 있습니다. 할 일을 결정하려고합니까? – jalynn2

+0

새 레코드를 얻으려면 B.account_number를 첫 번째 쿼리에 null로 추가해야합니다. –

답변

2

MERGE (별칭 "업서 트") 문을 사용하지 않는 이유는 무엇입니까?

MERGE INTO pcd1 M 
USING (SELECT * FROM #pcd_sep12) src ON M.account_number = src.account_number 
WHEN MATCHED 
-- UPDATE stuff 
WHEN NOT MATCHED BY TARGET 
-- INSERT stuff; 

당신이 임시 테이블 또는 테스트가 필요하지 않습니다이 방법 : 다음 당신은 샘플에서 UPDATE를 표시하지 않습니다 동시성 안전로드

0

당신은 내가 잘못 아니에요 경우이

INSERT INTO #test1 (column1, column2, column3) 
(SELECT column1, column2, column3 FROM #pcd_sep12 WHERE account_number NOT IN(SELECT account_number FROM #test1)) 
0

처럼 열을 지정해야합니다, 당신의 #의 TEST1 테이블은 pcd1 테이블에서 열이 있습니다. 두 번째 쿼리에서는 # pcd_sep12 만 선택할 수 있습니다.

관련 문제