2

仕事で繰り返し発生するテーマとなる問題への答えを見つけていただければ幸いです。これには、RDBMSテーブルからのデータを、列間でグループを繰り返す(ドメインと意味を共有する)フラットファイル形式に非正規化することが含まれます。残念ながら、これは避けられません。

これが私が必要とする変換の非常に単純化された例です:

      表A                               表B
-------------------1->多数--------------------------- -
  A_KEY FIELD_A B_KEY A_KEY FIELD_B
A_KEY_01 A_VALUE_01 B_KEY_01 A_KEY_01 B_VALUE_01
A_KEY_02 A_VALUE_02 B_KEY_02 A_KEY_01 B_VALUE_02
                                     B_KEY_03 A_KEY_02 B_VALUE_03

これは次のようになります。

A_KEY FIELD_A B_KEY1 FIELD_B1 B_KEY2 FIELD_B2
A_KEY_01 A_VALUE_01 B_KEY_01 B_VALUE_01 B_KEY_02 B_VALUE_02
A_KEY_02 A_VALUE_02 B_KEY_03 B_VALUE_03

からの各エントリTABLE Aには、出力フラットファイルに1つの行があり、からの関連フィールドごとに1つの列がありますTABLE B。出力ファイルの列には、から取得したフィールドの値を空にすることができますTABLE B

これにより非常に幅の広いファイルが作成されることはわかっていますが、これは必須です。MapForceとApatarを見てきましたが、この問題はあまりにも奇妙であるか、正しく使用できないと思います。

私の質問:これを実現するツールはすでにありますか、それとも最初から開発する必要がありますか(車輪の再発明はしたくない)?

4

3 に答える 3

0

プレーンSQLではこれを解決できないと確信していますが、RDBMSによっては、ストアドプロシージャなどを作成できる場合があります。それ以外の場合は、スクリプト言語で行うのはかなり簡単です。どのテクノロジーを使用していますか?

于 2009-12-10T11:49:57.950 に答える
0

これは役に立ちますか?

using-pivot-in-sql-server-2008

于 2009-12-10T11:55:26.180 に答える
0

ご協力ありがとうございます。関係はONE->MAXof 3であり、データが静的になっているため、この制約は変更されないため、次の一般的なSQLが機能します。

A.A_KEY、A.FIELD_A、B.B_KEY、B.FIELD_B、B2.B_KEY、B2.FIELD_B、B3.B_KEY、
B3.FIELD_B

から

 (A.A_KEY = B.A_KEY)の左結合B
左結合BB2オン(A.A_KEY = B2.A_KEYおよびB2.B_KEY!= B.B_KEY)
左結合BB3オン(A.A_KEY = B3.A_KEYおよびB3.B_KEY!= B.B_KEY
                   およびB3.B_KEY!= B2.B_KEY)

A.A_KEYによるグループ化
A.A_KEYによる注文
于 2009-12-15T11:57:25.570 に答える