Oracle 11の問題PIVOT:次のような場合、データが存在するすべてのフィールドF2〜F4にデータを正規化します。常にデータがあるので、F1キーです:OracleでPIVOTを使用する場合の損失JOIN
select t1.F1, t2.F2, t2.F3, t2.F4
from schema.t1,
schema.t2
where
t1.F1 = t2.F1 (+)
は今、私はすべてのフィールドF2に参加するために、OracleのPIVOT機能を使用するために行く - F4、F2、など、など、多くの間で、すべてのF2フィールドのフィールド1が存在するように次のように5行、すべての連結として、:
select * from (
select F1,
TRIM("1_F2") || TRIM("2_F2") || TRIM("3_F2") || TRIM("4_F2") || TRIM("5_F2") as "F2",
TRIM("1_F3") || TRIM("2_F3") || TRIM("3_F3") || TRIM("4_F3") || TRIM("5_F3") as "F3",
TRIM("1_F4") || TRIM("2_F4") || TRIM("3_F4") || TRIM("4_F4") || TRIM("5_F4") as "F4"
from (
select ROWNUM as RN, T.* from (
select t1.F1, t2.F2, t2.F3, t2.F4
from schema.t1,
schema.t2
where
t1.F1 = t2.F1 (+)
) T
)
PIVOT (
MAX(F2) as "F2",
MAX(F3) as "F3",
MAX(F4) as "F4"
FOR RN in (1,2,3,4,5)
)
)
このすべてのデータは、F2行中に見出されないようにデータを返している、例えば、すべてのレコードに対して単一のF2列に連結戻ってきます。実際に動作するレコードでは、正規化された結果にあるすべてのデータを取得します。しかし、それが動作しない場合、正規化された結果にあるデータは返されません。
アイデア?私は何が欠けていますか?
ありがとうございます。
これはどちらか評価しません - あなたのブラケットが一致していません。 – dipdapdop
@dipdapdopはい、あなたは正しいです。そして、私は重要な部品を不必要にサブセレクトに埋め込んでしまったので、それらも削除しました。 –
外部選択句に構文エラーがあります。また、WITHブロックにいくつかのテストデータを提供することをお勧めします。完全に動作する例を持つ方がよいでしょう。 – dipdapdop