Rows into columns

发表于:2007-07-02来源:作者:点击数: 标签:
create or replace package pivotas type rc is ref cursor; procedure data ( p_cursor in out rc );end; create or replace package body pivotas procedure data( p_cursor in out rc )is l_stmt long;begin l_stmt := @#select tr_date@#; for x in ( se

create or replace package pivotas   type rc is ref cursor;   procedure data ( p_cursor in out rc );end;

create or replace package body pivotas                                                                                        procedure data( p_cursor in out rc )is    l_stmt long;begin                                                                                            l_stmt := @#select tr_date@#;    for x in ( select distinct item_id from t order by 1 )    loop        l_stmt := l_stmt ||        @#, max(decode(item_id,@# || x.item_id ||              @#, adult )) adult_@# || x.item_id ||        @#, max(decode(item_id,@# || x.item_id ||              @#, child )) child_@# || x.item_id;    end loop;    l_stmt := l_stmt || @# from t group by tr_date order by tr_date@#;                                                                                            open p_cursor for l_stmt;end;

測試環境:

create table t (tr_date date, item_id number,adult number,child number)  

insert into t values(to_date(@#06/01/2004@#,@#DD/MM/YYYY@#) ,  9  ,  1199 ,   839.3)insert into t values(to_date(@#06/01/2004@#,@#DD/MM/YYYY@#) ,   588  ,  1249  ,  874.3)insert into t values(to_date(@#06/01/2004@#,@#DD/MM/YYYY@#) ,   4894  ,  2339 ,   2339)                                                                                

原文转自:http://www.ltesting.net