UNION ALLステートメントを使用せずにこのクエリを再作成しようとしていますが、スカラーサブクエリとモデルの節は試しましたが、どれも望んでいないようです。私のマネージャーは、連合のすべてを使用する必要はありませんが、私は本当に選択肢がOracle SQLのUNION ALLの代替
は、任意のヘルプは、私はあなたのクエリで唯一の真の機能的な違いがでていることに気づいた
SELECT null AS UDA_ID,
'Style-Level Attributes' AS UDA_DESC,
null AS DISPLAY_TYPE,
null AS REQUIRED_IND,
null AS ITEM,
null AS UDA_TEXT,
null AS UDA_DATE,
null AS UDA_VALUE
FROM DUAL
UNION ALL
select a.UDA_ID,
a.UDA_DESC,
a.DISPLAY_TYPE,
a.REQUIRED_IND,
b.ITEM,
b.UDA_TEXT,
b.UDA_DATE,
b.UDA_VALUE
from DAL.P_UDA a,
FFEDEV.FFE_ITEM_UDA b
where a.UDA_ID = b.UDA_ID (+)
AND a.REQUIRED_IND IS NOT NULL
AND b.ITEM_PARENT IS NULL
UNION ALL
SELECT null AS UDA_ID,
'Additional Attributes' AS UDA_DESC,
null AS DISPLAY_TYPE,
null AS REQUIRED_IND,
null AS ITEM,
null AS UDA_TEXT,
null AS UDA_DATE,
null AS UDA_VALUE
FROM DUAL
UNION ALL
select a.UDA_ID,
a.UDA_DESC,
a.DISPLAY_TYPE,
a.REQUIRED_IND,
b.ITEM,
b.UDA_TEXT,
b.UDA_DATE,
b.UDA_VALUE
from DAL.P_UDA a,
FFEDEV.FFE_ITEM_UDA b
where a.UDA_ID = b.UDA_ID (+)
AND a.REQUIRED_IND IS NULL
AND b.ITEM_PARENT IS NULL
これは、なぜ「UNION」が作成されたのかを示しています。あなたがそれをすることを強く望むなら、このすべてのクエリの間に 'FULL OUTER JOIN ON(1 = 2)'を使うことができ、 'NVL'や' CASE EXPRESSION'を使ってヌル値を置き換えることができます。 – sagi
結果行をヘッダーとして使用するのは奇妙です。選択した行にはデータのみを含める必要があります。したがって、結果の行に代わりに 'Style-Level Attributes'または 'Additional Attributes'を含む列を追加する必要があります。次に、クエリを動作させることが保証されていません。 'ORDER BY'節がなければ、保証されたソートはありません。 'UNION ALL'の約束は、どのような順序ではなく、結果に行が入ることです。クエリが並列スレッドで実行されると、すべてのレコードが混在する可能性があります。その後、長い間廃止された結合構文をもう使用しないでください。 –