0

いくつかのETLを実行すると、値ごとに多数の列を含む幅の広いファイルがあります。これを、値アイテムごとに1行の垂直テキストファイルに変換しようとしています。したがって、私のデータテーブルは次のようになります。

Store  Date  Col1 Col2 Col3 ...
Store1 1/2/12 12   23   34  ...
Store2 1/2/12 23   34   35  ...

私のColルックアップテーブルは次のようになります。

GLCode GLDesc TaxRate XLSColName
00.1234 Cash  0.00    Col2 

したがって、出力ファイルの行に必要です。
Store1,1/2/34,00.1234,0.00,23
ここで、23は、GLルックアップフィールドで指定されたCol2フィールドのデータテーブルの値です。

ルックアップタスクでそれを行う方法がわからなかったので、これをSSISパッケージの一部としてSQLで実行しようとしましたが、SQLでも実行できないようです!!

それが理にかなっていることを願って、あなたの助けに感謝します!JK

4

3 に答える 3

2

私があなたの質問について理解していることから、あなたはSQL Server UNPIVOT関数を探しています。この関数は、列を受け取り、それらを個々の行/値にピボットします。これを結合と組み合わせて、ルックアップテーブルから必要な情報を取得します。

SSISでこれを行うには、 UNPIVOT変換を使用できます

于 2012-05-03T12:49:05.050 に答える
1

以下からデータテーブルをピボットすることを検討する必要があります。

Store  Date  Col1 Col2 Col3 ...
Store1 1/2/12 12   23   34  ...
Store2 1/2/12 23   34   35  ...

Store  Date  Col Value
Store1 1/2/12 Col1 12
Store1 1/2/12 Col2 23
Store1 1/2/12 Col3 34
Store2 1/2/12 Col1 23
Store2 1/2/12 Col2 34
Store2 1/2/12 Col3 35

したがって、列名を結合/検索するデータとして扱うことができます。

于 2012-05-03T12:52:21.630 に答える
-1

あなたの質問は少し紛らわしいです。私はあなたが何をしようとしているのか理解していますが、データがどこに保存されているかを100%確信していません。これは正しいですか?:2つのテーブルがあり、1つのテーブルに必要なデータがありますか?1つのテーブルには、最初のテーブルを検索する値がありますか?

もしそうなら、あなたは次のようなものが欲しいです:

SELECT t1.col1, t1.col2, ... 
FROM table_1 t1 
    LEFT JOIN table_2 t2 ON t1.common_field = t2.common_field 
WHERE t2.search_by = 'CRITERIA'
于 2012-05-03T12:46:07.437 に答える