Oracleクエリから列名と対応するテーブル名を抽出するアプローチ/コードスニペットが必要です。クエリ、および結果として列とテーブルの名前は実行時に変更され、一部の列名は通常計算されます。つまり、関数にラップされ、エイリアスが付けられます。正規表現を使用してさまざまな文字列トークン化手法を試して、予想される出力に従ってこれを分離しましたが、これまでのところ、うまくいきません! 例えば:
select mandate_name, investment_sub_team_name,
fn_sum(REG_INV_CMP_AUM) REG_INV_CMP_AUM,
fn_sum(NON_REG_INV_CMP_AUM) NON_REG_INV_CMP_AUM
from DM_SAI_VALUATIONS_STEP3
where position_interval_type = 'E'
and position_type = 'T'
group by mandate_name, investment_sub_team_name;
列の出力を次のようにします。
mandate_name 投資サブチーム名 fn_sum(REG_INV_CMP_AUM) fn_sum(NON_REG_INV_CMP_AUM)
上記の注: エイリアスではなく、関数を含む列が必要です
上記のすべての列に対して、テーブル名を DM_SAI_VALUATIONS_STEP3 として出力したい
クエリは xml 出力の一部であるため、編集できません。したがって、エイリアスを変更することはできません。2 番目のポイントは、クエリからテーブル名を抽出することです。列とテーブルを含むクエリは異なるため、文字列トークンの位置など、何もハードコーディングできないという事実を考慮してください。それらをトークン化するための一般的なアプローチを探しています。したがって、私が期待する列出力に対して、テーブル名も必要です..それは常にfrom句の1つのテーブルだけに行くので、それを抽出することは問題になりません.
期待される出力:
Column Name Table Name
----------- ----------
mandate_name DM_SAI_VALUATIONS_STEP3
investment_sub_team_name DM_SAI_VALUATIONS_STEP3
fn_sum(REG_INV_CMP_AUM) DM_SAI_VALUATIONS_STEP3
fn_sum(NON_REG_INV_CMP_AUM) DM_SAI_VALUATIONS_STEP3
任意のヘルプ PR ポインターをいただければ幸いです。