2017-10-01 6 views
0

이 쿼리를 사용하여 상기 테이블의 결과를 반환하고 SalesReason 테이블에 삽입합니다. 아래 그림과 같이 삽입 할 때 행을 반환하는 행의 수가 8000을 넘지 만 인 행을 선택하면 테이블에 3 행만 삽입됩니다. 왜 그런가? SELECT 쿼리 결과에 많은 중복 행이 있습니다 SelectStatementResult예상보다 적은 수의 행 INSERTED

+0

사용중인 데이터베이스에 질문에 태그를 답니다. –

+0

@GordonLinoff 저에게 어떻게 안내해 주실 수 있습니까? –

+0

수정을 클릭 한 다음 태그 섹션까지 스크롤합니다 (질문 본문 영역 아래에 있음). 데이터베이스 (예 : MySQL, SQL Server)에 대한 태그 추가 –

답변

2

이 선택 문의 결과 :

INSERT INTO dp_stg_sales.SalesReason (SalesReasonID, TeamName, ReasonType) 
SELECT (CASE WHEN SalesReasonID_One = 'NULL' THEN 0 
      ELSE CAST(SalesReasonID_One AS INTEGER) 
     END) AS SalesReasonID, 
     Name_One, 
     ReasonType 
FROM dp_stg_sales.Sales_April_Part1_Filtered 

편집

. dp_stg_sales.SalesReason에는 IGNORE_DUP_KEY = ON 옵션으로 생성 된 고유 색인이 있으므로 테이블에 아직 존재하지 않는 고유 키 값만 삽입됩니다.

+0

당신은 절대적으로 정확한 선생님입니다. 기본적으로 Teradata를 사용하고 있습니다. 기본적으로 언급하지 않으면 모든 테이블이 SET 테이블 (중복 허용되지 않음)이므로 테이블을 만들 때 MULTISET을 추가하여이 문제를 해결했습니다. –

+0

질문에 SQL 태그를 붙인 이유는 무엇입니까? 서버가 Teradata 인 경우? –

+0

@ umair.ashfr :'MULISET'으로 전환하면 모든 중복 행이 삽입되지만 실제로 필요합니까? – dnoeth