2017-04-06 81 views
0
select 
UNIT, 
NBR, 
ODE, 
ANS, 
IT, 
UNIT, 
ESC, 
DATE1, 
DATE2, 
CD, 
CD2, 
CD3, 
TRANS 
from Jblog 
where UNIT = 'Alaska' 
AND DATE1 > 0 and 
DATE2 > 0 
AND ODE = '67342' 
AND NBR = '50952' 



select 
UNIT, 
TRANS, 
ELER, 
ELER_DATE, 
ELERDATE2, 
TRANS 
from JBLOG 
where unit = 'ALASKA' 
AND ELER <> ' ' 
and ELERDATE > 0 and 
ELERDATE2 > 0 
and ELER = '5201' 
  
select 
UNIT, 
TRANS, 
LNT, 
LNT_MIN, 
LNT_MAX, 
LNT_D, 
LNT_DATE1, 
LNT_DATE2, 
LNT_DATE3, 
LNT_AL, 
TRANS 
from JBLOG 
where UNIT = 'ALASKA' 
AND LNT_DATE <> 0 
AND LNT_DATE2 > 0 and 
LNT_DATE3> 0 
AND LNT_D = '0064' 

  

我希望能夠將所有這些查詢合併爲一個查詢。數據 是不同的,所以如果我只是直接將它們合併,並有一個長和 子句與一堆和我不會得到任何結果,因爲排除 將使它不會返回任何數據。但是,當我單獨運行它們時,我會得到期望的結果。我試過工會,它並沒有完全解決,有沒有人有解決方案?在此先感謝我想要一種方法將所有這些Oracle查詢合併爲一個

回答

0

UNION應該解決您的問題,但請注意,UNION要求要組合的查詢必須返回相同的屬性序列(關於名稱和類型)。

因此,當上述查詢與UNION合併時,每個查詢必須選擇相同的屬性序列;如果特定查詢中某些特定屬性沒有意義,即使您選擇了默認值,仍然必須提供它們。

例如,下面的查詢應該工作:

select a, b, NULL as c 
    from table1 
    where a>5 
union 
select a, NULL as b, c 
    from table1 
    where a<=5 

而以下查詢則沒有:

select a, b 
    from table1 
    where a>5 
union 
select a, c 
    from table1 
    where a<=5 
+0

OP應該可能在這裏使用'UNION ALL'而不是'UNION'。 –

0

必須有某種關鍵參加由的。選擇任何字段生成唯一的項目關鍵字,然後對這些字段上的每個查詢執行LEFT JOIN到主列表。

由於您的查詢篩選出來,不一定會適當加入的一切,再加一層到挑選一切沒有任何過濾查詢,以便你可以加入一切吧:

select * 
from 
    (select UNIT /*or key whatever*/ from Jblog) all_units 
LEFT JOIN 
    (.....) a 
ON a.unit = all_units.unit 
LEFT JOIN 
    (.....) b 
ON b.unit = all_units.unit 
LEFT JOIN 
    (.....) c 
ON c.unit = all_units.unit 

哪裏a,b和c是您列出的3個查詢

+0

謝謝我會試試你的解決方案。謝謝 – HushMamba

+0

我得到列明確定義錯誤,不確定模糊來自哪裏。 – HushMamba

1

從表中選擇所有列的順序相同,並使用聯合來合併它們會產生所需的結果。

相關問題