Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我需要在Oracle';s SQL_Sql_Oracle_Pivot - Fatal编程技术网

我需要在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。

这有助于查看您正在使用的查询。您可以将第一个查询用作主查询,并为其他两个查询选择子查询,而不是从双查询中选择。我想看看实际的查询,以确定这是否真的有必要。似乎您假定所有查询都在同一个表或一组表上,但情况可能并非如此。这是一个公平的说法。我的印象是它来自同一组元组。