Мне нужно добавить 3 запроса в Oracle Oracle - PullRequest
0 голосов
/ 26 марта 2011

Мне нужно добавить три запроса и сделать их похожими на:

HEADER1  HEADER2  HEADER3
-------------------------
Total1   Total2   Total3 

Я пробовал UNION, но это возвращает результаты запросов в таких строках:

HEADER
------
total1
total2
total3

Есть предложения?

Ответы [ 3 ]

1 голос
/ 26 марта 2011

Не уверен, но может быть что-то вроде:

select (select x1 from something1) as header1, 
(select x2 from something2) as header2, 
(select x3 from something3) as header3
from dual
0 голосов
/ 26 марта 2011

Иногда я считаю полезной конструкцию:

select sum(c1) Header1, sum(c2) Header2, sum(c3) Header3
from (
     select field c1, 0 c2, 0 c3
     from table1
     ) t1,
     (
     select 0, field, 0
     from table2
     ) t2
     (
     select 0,0,field
     from table3
     ) t3
[where clause and joins between t1,t2 and t3]

В примере я принял числовые значения и использовал сумму. Тот же подход можно использовать со строками, например, заменив 0 на NULL и SUM на MAX.

0 голосов
/ 26 марта 2011

Это интересная ситуация, когда вы хотите сделать что-то в одну строку, а не в несколько строк.Самый простой способ - это сделать sum () для каждого «столбца» и поместить предложение where в стиль IF ().

select sum(sumconstraints) as Header1, sum(sumconstraints) as Header2, etc... 

sumconstraints should be an IF(where clause for this total, 1, 0)
...