学习ORACLE横纵表转换技巧

      我的日志 2007-3-21 16:5

刚学的,整理一下,怕忘记了!呵呵

-------------------------------------------------------------------------------------------------------
select user from dual
/

drop table tbl_org
/

create table tbl_org
(
 name varchar2(10),
 subject varchar2(10),
 grade number(3)
)
/

insert into tbl_org values('张三','语文',80);
insert into tbl_org values('张三','数学',86);
insert into tbl_org values('李四','语文',78);
insert into tbl_org values('李四','数学',85);
insert into tbl_org values('李四','英语',78);
commit
/

set serverout on;
drop table tbl_result;

declare
       col1   tbl_org.subject%type;
       sqlstr varchar2(2400);
       cursor c_try is select distinct subject from tbl_org;  
begin
     sqlstr:='';
    
     open c_try;
     loop  
            fetch c_try into col1;  
            exit when c_try%notfound;  
            sqlstr := sqlstr || ', max(decode(subject,'''||col1||''',grade,0)) as '||col1;
     end loop;
     close c_try;
    
     sqlstr:='create table tbl_result as select name '||sqlstr||' from tbl_org group by name'; 
     dbms_output.put_line('');
     dbms_output.put_line(sqlstr);
     execute immediate sqlstr;
end;
/

-------------------------------------------------------------------------------------------------------

 
标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commenttime}{commentauthor}

{CommentUrl}
{commentcontent}