我試圖重新創建此查詢,而無需使用UNION ALL聲明,我已經試過 標量子查詢和示範條款,但沒有似乎做我想做的。我的經理不希望使用UNION ALL,但我實在不明白的替代方案是什麼替代UNION ALL中的Oracle SQL
任何幫助將是巨大的
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
將結果行用作標題是很奇怪的。所選行只能包含數據。因此,您應該將包含「樣式級別屬性」或「附加屬性」的列添加到結果行中。然後,您的查詢不能保證按照您的要求工作。如果沒有'ORDER BY'子句,則不能保證排序。所有'UNION ALL'的承諾是行都得到結果,而不是以什麼順序。一旦你的查詢在並行線程中執行,你可能會看到你的記錄混雜在一起。那麼你不應該再使用已經被棄用的連接語法。 –