2016-07-21 2 views
0

문제 :이 테이블에는 3 개의 테이블이 있습니다. 첫 번째 표는 기본적으로 계좌 번호 목록입니다. 두 번째 테이블에는 회사 내의 부서 목록이 포함되며 마지막 테이블에는 열거 된 건물 위치 목록 (식물)이 포함됩니다. SSIS의 데이터 원본은 각 테이블 (식물, 부서 및 acctnum, 모두 varchar 유형)에서 열의 모든 레코드를 가져 오는 설치 프로그램 (OLEDB)입니다. SSIS에서 변수 (객체 유형)를 만들고 세 테이블 끌어 오기 각각에 대해 결과 집합을 할당했습니다. 행 변수가 설정되고 할당되었습니다.SSIS - For Each Loop on multiple tables

목표 : 각 계정 번호에 대해 'plant'+ 'dept'+ 'acctnum'으로 구성된 고유 '코드'를 만들고이 연결된 결과를 별도의 테이블에 삽입해야합니다. 각 계좌 번호는 각 공장뿐만 아니라 모든 부서와 같은 방식으로 결합해야합니다.

따라서 샘플 삽입 레코드는 '081350015'처럼 보일 수 있습니다 (처음 2 자리는 식물, 다음 2는 부서, 나머지 5는 acctnum 임). 다음에 삽입 된 레코드는 공장 테이블에서 선택된 다음 플랜트 레코드와 dept 테이블에서 선택된 다음 dept 레코드의 결과와 결합 된 동일한 계정 번호를 사용합니다. 기본적으로 모든 계좌 번호는 부서/플랜트의 모든 조합을 가져옵니다.

예 :

  • AcctNumber 테이블에서 첫번째 기록 : '50001'(AcctNumber TBL을 대략 총 300 행) 파종 테이블
  • 첫번째 기록 : 01 (식물 표 15 행)
  • 부서 테이블
  • 제 레코드 '22'(부서 테이블 50 행)
  • 지금은 별도의 테이블에 삽입하기위한 코드를 작성 -> '01'+ '22'+ '50001'-> 삽입 '01225001'
  • AcctNumber 테이블의 첫 번째 레코드를 여전히 사용하고 있습니다 : '500 '아직도 부서 테이블에서 첫번째 레코드를 사용
  • '01 22 '지금
  • 는 식물 표의 두 번째 레코드 이동'41 '
  • 빌드 코드를 삽입을위한 별도의 테이블로 ->'41 '+ '22 '+'50001 '-> 삽입
  • 여전히 AcctNumber 테이블에서 첫 번째 레코드를 사용하여 :'50001 '
  • 여전히 부서 테이블에서 첫 번째 레코드를 사용하여 :'22 '
  • 이제 공장 테이블에서 세 번째 레코드로 이동' 18 '
  • 별도의 테이블에 삽입하기위한 빌드 코드 ->'18 '+'22 '+ 50001'-> 삽입

AcctNum/Dept 조합 ('22'+ '50001')이 플랜트 테이블에서 반환 된 모든 플랜트 레코드와 결합 될 때까지이 흐름이 이어집니다.

이제 AcctNum 테이블 ('50001')에서 반환 된 첫 번째 레코드를 사용하여 Dept 테이블 ('62')에서 반환 된 NEXT 레코드를 사용하고 Plant 테이블에서 반환 된 첫 번째 레코드로 반복합니다 '01') 결과적으로 '01'+ '62'+ '50001'이 별도의 테이블에 삽입됩니다. 따라서 모든 Dept 레코드가 반환 될 때마다 고유 한 AcctNumber가 반환 된 모든 공장 ​​레코드와 결합됩니다.

혼란 스러울 수도 있습니다 (또는 아닐 수도 있음). 추가 설명이 필요한지 알려주십시오.

+1

더 많은 샘플 데이터와 예상 출력이 도움이 될 것입니다. – HoneyBadger

+0

SSIS에서 왜이 작업을 수행해야합니까? 그것은 SQL에서 간단한 CROSS JOIN입니다. –

+0

관련없는 테이블 3 개에 교차 로그인 하시겠습니까? 나는 SQL이 어떻게 생겼는지 확신 할 수 없다. – Jared

답변

0

나는 그것을 해결했다. 한 번에 2를하고 임시 테이블에 각각의 결과를 저장 한 다음 공통적으로 갖고 있던 열에 해당 테이블을 조인하여 교차하여 3 개의 테이블을 교차 결합합니다. 의견에 감사드립니다.