简体   繁体   English

无法在ORACLE 10G数据库上进行PIVOT

[英]Unable to PIVOT on ORACLE 10G DATABASE

I'm trying to pivot with oracle 10G. 我正在尝试使用oracle 10G。 Screen shot1 is the actual data in table. 屏幕截图1是表中的实际数据。 I'm trying to get data like screen shot 2. Please suggest me PIVOT function is not working in 10G. 我正在尝试获取屏幕截图2之类的数据。请建议我PIVOT功能在10G中不起作用。 屏幕截图1 . 屏幕截图2

You could use conditional aggregation : 您可以使用conditional aggregation

SELECT ANALYST
    ,COUNT(CASE WHEN status = 'unchecked'   THEN 1 END) AS unchecked
    ,COUNT(CASE WHEN status = 'observation' THEN 1 END) AS observation
    ,COUNT(CASE WHEN status = 'supervisor'  THEN 1 END) AS supervisor
    ,COUNT(CASE WHEN status = 'pending'     THEN 1 END) AS pending
    ,COUNT(CASE WHEN status = 'closed'      THEN 1 END) AS closed
    ,COUNT(*) AS Grand_Tot
FROM tab
GROUP BY ANALYST
ORDER BY ANALYST;

EDIT: 编辑:

Can i know how to SUM the Grand_Tot Column along with that query i was trying SUM(Grand_Tot) but getting error as invalid identifier. 我能知道如何将Grand_Tot列与该查询求和吗?我正在尝试SUM(Grand_Tot),但由于无效标识符而出错。

One way is to use subquery: 一种方法是使用子查询:

SELECT sub.*, SUM(Grand_Tot) OVER() AS Sum_Grant_Tot
FROM (
    SELECT ANALYST
        ,COUNT(CASE WHEN status = 'unchecked'   THEN 1 END) AS unchecked
        ,COUNT(CASE WHEN status = 'observation' THEN 1 END) AS observation
        ,COUNT(CASE WHEN status = 'supervisor'  THEN 1 END) AS supervisor
        ,COUNT(CASE WHEN status = 'pending'     THEN 1 END) AS pending
        ,COUNT(CASE WHEN status = 'closed'      THEN 1 END) AS closed
        ,COUNT(*) AS Grand_Tot
    FROM tab
    GROUP BY ANALYST
) sub
ORDER BY ANALYST;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM