如何动态SQL透视?

时间:2015-02-17 13:33:41

标签: sql oracle

我在oracle中找到了一个关于动态旋转的article。那里的解决方案看起来不错,但是当我从该站点尝试以下示例时,我收到ORA-00940错误。

select *
from   table( pivot(' select deptno
                      ,      job
                      ,      avg(sal) sal_avg
                      from   emp
                      group
                      by     deptno
                      ,      job
                    ')
            );

查询会导致以下错误:

FEHLER in Zeile 2:
ORA-00904: "PIVOT": ung³ltiger Bezeichner

我找到了很多其他网站,链接到文章,但没有任何地方认为查询不起作用。只有少数博客说他们没有证明这一点。 那么,为某人工作这些方法,可能几乎没有什么修改?

查询应该得到与以下非动态sql相同的结果:

select deptno, clerk, salesman,
       manager, analyst, president
  from (select deptno, job, sal
          from scott.emp )
 pivot( avg(sal) for job in
 ( 'CLERK' as clerk,
   'SALESMAN' as salesman,
   'MANAGER' as manager,
   'ANALYST' as analyst,
   'PRESIDENT' as president ) )
 order by deptno;

预期结果如下:

    DEPTNO      CLERK   SALESMAN    MANAGER    ANALYST  PRESIDENT
---------- ---------- ---------- ---------- ---------- ----------
        10       1300                  2450                  5000
        20        950                  2975       3000
        30        950       1400       2850

0 个答案:

没有答案