2016-03-01 55 views
0

我們必須在這裏我們使用的是第三方工具(jitterbit)輸出文件的情況下,我們需要的文件有標題行。所以我認爲我們可以在Oracle視圖中使用一個全部的聯合來生成文件的數據。甲骨文UNION ALL怎麼樣的結果輸出

但我的問題是,將甲骨文總是讀聯盟第一的頂部查詢?

這裏將是我所期待的

select 'user.CustomAttribute.Client' 
     ,'user.Email' 
     ,'user.customAttribute.alternateEmail' 
    from dual 
    UNION ALL 
    Select c.client 
     ,c.email 
     ,c.alt_email 
    from contact  

於是將所有的硬編碼值頂部總是先返回一個非常基本的例子?

回答

2

推它分解成子查詢,並添加一列管理您的明確訂購

SELECT client, email, alt_email 
FROM (
select 'user.CustomAttribute.Client' client 
     ,'user.Email' email 
     ,'user.customAttribute.alternateEmail' alt_email 
      -- here we add an aid to ordering, 1 comes first 
     , 1 displayorder 
    from dual 
    UNION ALL 
    Select c.client 
     ,c.email 
     ,c.alt_email 
      -- here we add an aid to ordering, 2 comes after our header 
     , 2 displayorder 
    from contact ) 
order by displayorder, client; 
+0

好主意,我很欣賞反饋。乾杯! – Travis

0

沒有保證或在Oracle這樣的查詢沒有默認順序。你可以,但是,管理所需的命令,如果你使用子查詢,如:

select * from (select 'user.CustomAttribute.Client' as client 
    ,'user.Email' as email 
    ,'user.customAttribute.alternateEmail' as alt_email 
from dual 
UNION ALL 
Select c.client 
    ,c.email 
    ,c.alt_email 
from contact) 
order by client, email, alt_email;  

閱讀此鏈接查看更多細節:https://community.oracle.com/thread/2341048?tstart=0

+0

這裏你不需要子查詢;您可以在兩個聯合分支之後進行排序,並引用第一個分支中的列別名。但是這不會將第一個聯合分支結果放在結果集中,這似乎是OP想要的結果。你需要一個虛擬標誌來讓子查詢達到任何目的,就像在Michael Broughton的答案中一樣。 –