2010-12-06 1 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は3つのカラムのうち2つ(Property_A、Property_C)を返し、usp_MakeData_2は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

このdoes't仕事、どちらもあなたの方法、また "EXEC myStoredProcedure FROM ..." と。構文が正しくありません。そして、問題は、私はまだわからない、どのように一時テーブルにストアドプロシージャの結果を格納することです。私は今UDFについて学んでいます。たぶんこれが役立ちます。 – fancyPants

関連する問題