2010-12-06 4 views
1

동적 피벗으로 데이터를 제공하는 저장 프로 시저가 있는데이 데이터를 가능한 모든 열이있는 테이블에 삽입하려면 동적 피벗이 생성 할 수 있습니다 .고정 테이블 (SSIS 또는 SQL)에 대한 동적 피벗 결과

예 : 서로

Property_A Property_C 
---------------------- 
Value_A  Value_A 
Value_B  Value_C 
... 

는 동일한 SP를 실행가 반환간에

Property_A Property_B 
---------------------- 
Value_D  Value_A 
... 

결과를 생성 할 수있다 :

동적 피벗 저장 프로 시저 결과 다음 표를 준다 이런 식탁에 넣어야합니다.

Property_A Property_B Property_C 
---------------------------------- 
Value_A  NULL  Value_A 
Value_B  NULL  Value_C 
Value_D  Value_A  NULL 

등등.

SSIS를 통해 SQL (MS SQL Server) 이상을 통해 어떻게이 작업을 수행 할 수 있습니까? 사전에

감사합니다,

tombom

답변

1

이 호출 프로세스가 열이 결과에 어떤 알 수없는 경우 처리하기 위해 조금 까다 롭습니다. 테이블 (영구 또는 임시)에 삽입하려면 삽입 할 열의 개수와 삽입 할 열의 개수가 일치해야합니다.

다음은 SP의 결과를 테이블에 삽입하는 방법입니다. 표에 모든 열을 포함 할 필요는 없습니다. 그러나 예제에서 usp_MakeDate_1은 세 개의 열 (Property_A, Property_C) 중 두 개를 반환하고 usp_MakeData_2는 두 개의 다른 열 (Property_A, Property_B) 집합을 반환합니다.

INSERT INTO MyResults (Property_A, Property_C) 
EXEC dbo.usp_MakeData_1 

INSERT INTO MyResults (Property_A, Property_B) 
EXEC dbo.usp_MakeData_2 

동적 SQL의 경우 SSIS가 더욱 제한적이라는 것을 알 수 있습니다. 대부분의 경우 출력 및 입력은 설계시 알려 져야합니다.

+0

아, 알겠습니다. 저장 프로 시저 내부의 테이블에 결과를 삽입합니다. SSIS가 내 뇌를 끓여서이 솔루션을 생각하지 않았습니다. 내 경우에는 받아 들일 만하다. 매우 감사합니다. – fancyPants

0
SELECT 
    * 
INTO 
    MyNewTable 
FROM 
    TempTableProducedByStoredProc 
+0

이 방법은 사용자의 의도에 따라 작동하지 않으며 "... EXEC myStoredProcedure"에서 작동하지 않습니다. 구문이 잘못되었습니다. 그리고 문제는, 내가 아직 모르겠다는 것입니다, 어떻게 임시 테이블에 저장 프로 시저 결과를 저장합니다. 지금 UDF에 대해 배우려고합니다. 아마 이것은 도움이 될 것입니다. – fancyPants