1

次の図のような2つのテーブルがあります

ここに画像の説明を入力

ここに画像の説明を入力

以下の図のようにレコードを選択する必要があります。AH_ID は 2 番目のテーブルに結合する必要があり、ATT_ID は列ヘッダーになり、ATT_DTL_STR_VALUE はその列に関連する値として取得する必要があります

必要な出力

ここに画像の説明を入力

4

1 に答える 1

1

リレーショナル DBがモデリングに最適ではないEntity-Attribute-Valueデータ モデルがあるようです。キー値ストアを調べることをお勧めします。

ただし、ジャスティンが示唆したように、11g を使用している場合は、次のようにピボット句を使用できます。

SELECT *
FROM (
      SELECT T1.AH_ID, T1.AH_DESCRIPTION, T2.ATT_ID, T2.ATT_DTL_STR_VALUE
      FROM T1 
        LEFT OUTER JOIN T2 ON T1.AH_ID = T2.AH_ID
     )
PIVOT (MAX(ATT_DTL_STR_VALUE) FOR (ATT_ID) IN (1));

このステートメントでは、ATT_ID をハードコードする必要がありますが、動的に行う方法があります。詳細については、こちらをご覧ください

于 2013-05-22T02:54:35.073 に答える