我需要在Oracle';s SQL
我需要附加三个查询,并使其如下所示:我需要在Oracle';s SQL,sql,oracle,pivot,Sql,Oracle,Pivot,我需要附加三个查询,并使其如下所示: HEADER1 HEADER2 HEADER3 ------------------------- Total1 Total2 Total3 HEADER ------ total1 total2 total3 我尝试了UNION,但它会以如下方式返回查询结果: HEADER1 HEADER2 HEADER3 ------------------------- Total1 Total2 Total3 HEADER ----
HEADER1 HEADER2 HEADER3
-------------------------
Total1 Total2 Total3
HEADER
------
total1
total2
total3
我尝试了UNION
,但它会以如下方式返回查询结果:
HEADER1 HEADER2 HEADER3
-------------------------
Total1 Total2 Total3
HEADER
------
total1
total2
total3
有什么建议吗?不确定,但可能是:
select (select x1 from something1) as header1,
(select x2 from something2) as header2,
(select x3 from something3) as header3
from dual
这是一个有趣的情况,当您希望将某个内容放入一行而不是多行时。最简单的方法是对每个“列”执行sum(),并将where style子句放置在IF()语句中
select sum(sumconstraints) as Header1, sum(sumconstraints) as Header2, etc...
sumconstraints should be an IF(where clause for this total, 1, 0)
我有时发现以下是一个有用的结构:
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。这有助于查看您正在使用的查询。您可以将第一个查询用作主查询,并为其他两个查询选择子查询,而不是从双查询中选择。我想看看实际的查询,以确定这是否真的有必要。似乎您假定所有查询都在同一个表或一组表上,但情况可能并非如此。这是一个公平的说法。我的印象是它来自同一组元组。