2014-10-05 42 views
0

DB版本:甲骨文11.1.2.1.0 OS:OEL5显示多个SELECT语句结果水平

我试图打印水平使用SQL多个SELECT语句的结果,但没能实现我想要的结果。

多SQLS:

SELECT 'DB Version', version db_version FROM v$instance 
UNION ALL 
select 'Oracle Client', length(addr)*4 || '-bits' word_length from v$process where ROWNUM =1 
UNION ALL 
/

结果:

'DBVERSION'   DB_VERSION 
---------------------- ---------------------------------------------------------------------------- 
DB Version    11.2.0.1.0 
Oracle Client   64-bits 

所需的结果:

DB VERSION ORACLE CLIENT 
-------- ------------------ 
11.2.0.1.0 64-bits   

回答

1

这里是说,假设我们正在谈论的期望的结果是只有一个有几列的排:

select max(case when col = col1 then colval end) as "DB VERSION", 
     max(case when col = col2 then colval end) as "ORACLE CLIENT" 
    from (SELECT version colval, 'col1' col 
      FROM v$instance 
     UNION ALL 
     select length(addr) * 4 || '-bits', 
       'col2' 
      from v$process 
     where ROWNUM = 1) 
1

如果你知道每个子查询返回一行,您可以使用cross join或子查询:

SELECT (SELECT version db_version FROM v$instance) as "DB Version", 
     (select length(addr)*4 || '-bits' word_length from v$process where ROWNUM = 1) as "Oracle Client" 

或:

SELECT v."DB Version", oc."Oracle Client" 
FROM (SELECT version db_version as "DB Version" FROM v$instance) v CROSS JOIN 
    (select length(addr)*4 || '-bits' as "Oracle Client" from v$process where ROWNUM = 1) oc