2016-03-01 44 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的答案中一样。 –