レポート対象のデータに基づいてテーブルを作成する必要があるストアド プロシージャを作成しています。
この状況では、ある日付範囲の特定のコードについて、1 日あたり 3 つの値を取得します。
このストアド プロシージャの特定の実行で、日付範囲のコード値 X、Y、および Z があるとします。
select abc.code,
abc.date,
abc.val_1,
abc.val_2,
abc.val_3
from data.abc
where abc.date BETWEEN '01-OCT-2009' AND '31-OCT-2009'
したがって、日付範囲の各日について、コード x、y、および z の 3 つのレコードがあります。
最終的なテーブルでは、これを行から列に変換する必要があります。通常はデコード関数を使用しますが、ここでは、戻ってくるデータに基づいて最終テーブルを動的に作成したいと考えています。
この場合、範囲内の日ごとに 1 つのレコードがあり、さらに 9 つの列 (val_1_X、val_2_x、val_3_x、val_1_y など) があります。
これを動的に設定して、新しい「コード」が導入されたときにストアド プロシージャを再度開く必要がないようにし、レポートの各インスタンスで、そのインスタンスで「コード」のみが返されるようにします。レポートは最終表に含まれています。
これは動的SQLで可能ですか? 私は Oracle バージョン 10g を使用しています。