ORACLE 10G 中的 PIVOT

PIVOT in ORACLE 10G

我在 ORACLE 10G 中有以下 table :-

AUTOID PLAN_DATE ITEM_CODE 数量

5 27-04-16 F10000010 10
7 27-04-16 F10000060 30
8 27-04-16 F10000020 10

要求输出为:-

日期 F10000010 F10000060 F10000020
27-04-16 10 30 10

据我们所知,oracle 10g 中没有可用的数据透视功能。那么我们如何才能做到这一点。这里 Item_CODE 是动态代码,可以根据日期变化。 任何帮助都将非常适用。

谢谢 PREM

使用以下程序解决: 创建或替换过程 dynamic_pivot(p_cursor in out sys_refcursor) 作为 sql_query varchar2(1000) := 'select PLAN_DATE '; 开始 对于 x in (select distinct ITEM_CODE,qty from XXES_DAILY_PLAN_TRAN where PLAN_DATE='27-04-2016') 环形 sql_query := sql_query || ' , sum(case when qty = '''||x.qty||''' then qty else 0 end) as '||x.ITEM_CODE; dbms_output.put_line(sql_query); 结束循环; sql_query := sql_query || ' from XXES_DAILY_PLAN_TRAN where PLAN_DATE=''27-04-2016'' group by PLAN_DATE '; dbms_output.put_line(sql_query); 为 sql_query 打开 p_cursor; 结束;

//调用

变量 x refcursor 执行 dynamic_pivot(:x) 打印 x