for fluid in ('CN' as liq, 'G' as gas,'W' as water)
我最想做的是做一些说
的事情for fluid in ('CN' **or 'O'** as liq, 'G' as gas,'W' as water)
答案 0 :(得分:0)
在Oracle中使用PIVOT运算符没有直接的方法。所以你需要一种间接的方式。
一种可能性 - 特别是如果您需要一些先前的处理(例如,因为您要旋转的表有太多列,并且您需要首先选择一个列的子集,无论如何,在旋转之前)是使用{{1该子查询中的表达式。例如:
case
或者,您可以先进行旋转,然后在外部select job, ten_twenty, all_others
from (
select sal, job,
case when deptno in (10, 20) then 10 else 30 end as dept_grp
from scott.emp
)
pivot ( sum(sal) for dept_grp in (10 as ten_twenty, 30 as all_others) )
;
JOB TEN_TWENTY ALL_OTHERS
--------- ---------- ----------
CLERK 3200 950
SALESMAN 5600
PRESIDENT 5000
MANAGER 5425 2850
ANALYST 6000
中再应用一次操作。在这里你需要小心,因为即使是一个成员SELECT
,GREATEST
和简单加法(+
)等函数也会返回null
,因此您需要使用{ {1}}或null
等;对于某些功能而言,这根本不起作用(特别是coalesce
- 两个子集平均值的nvl
通常不是整个集合的平均值,如果两个子集具有不同的基数)。鉴于所有这些缺点,我会选择不举一个例子 - 但确实存在这种可能性。