create table T(员工 varchar2(20),商品 varchar2(20),卖出数量 numeric(5,0))
insert into T values('张','显示器',1)
insert into T values('张','鼠标 ',5)
insert into T values('张','光驱 ',1)
insert into T values('李','键盘 ',3)
insert into T values('赵','显示器',3)declare col1 T.商品%type; --定义类型
sqlstr varchar2(8000);
cursor c_try is select distinct 商品 from T;
begin
sqlstr:='';
open c_try;
loop
fetch c_try into col1;
exit when c_try%notfound;
sqlstr:=sqlstr||', sum(decode(商品,'''||col1||''',卖出数量,0)) as '||col1;
exit when c_try%notfound;
end loop;
close c_try;
sqlstr:='create table tt as select 员工'||sqlstr||' from T group by 员工';
--tt为刚创建的一个保存结果的表
execute immediate sqlstr;
end;--执行
select * from tt;
/*
员工 显示器 键盘 鼠标 光驱
----- ------ ---- ---- ----
张 1 0 5 1
李 0 3 0 0
赵 3 0 0 0
*/
insert into T values('张','显示器',1)
insert into T values('张','鼠标 ',5)
insert into T values('张','光驱 ',1)
insert into T values('李','键盘 ',3)
insert into T values('赵','显示器',3)declare col1 T.商品%type; --定义类型
sqlstr varchar2(8000);
cursor c_try is select distinct 商品 from T;
begin
sqlstr:='';
open c_try;
loop
fetch c_try into col1;
exit when c_try%notfound;
sqlstr:=sqlstr||', sum(decode(商品,'''||col1||''',卖出数量,0)) as '||col1;
exit when c_try%notfound;
end loop;
close c_try;
sqlstr:='create table tt as select 员工'||sqlstr||' from T group by 员工';
--tt为刚创建的一个保存结果的表
execute immediate sqlstr;
end;--执行
select * from tt;
/*
员工 显示器 键盘 鼠标 光驱
----- ------ ---- ---- ----
张 1 0 5 1
李 0 3 0 0
赵 3 0 0 0
*/
解决方案 »
- 去重复值问题
- java.sql.SQLException: 用尽的 Resultset 如何解决
- 将SQL-Server存储过程转换为Oracle的,谢谢大家~~~
- 数据导入导出问题
- 在英文操作系统环境下,怎样显示数据库内的中文内容
- 高手救急:hp proliant服务器 3G内存 win2003server+oracle9i 内存分配问题
- 初学oracle,大侠们帮我转两函数,从sqlserver的转换成为oracle9i的。
- 如何得到所有用户表的表名?(在线等候)
- 一个中小型数据库的表空间应该多大合适一点??
- 如何添加子序号?
- 如何将MS SQL 2000中的表结构及记录导入到Oracle 10g 中
- oracle新建用户问题!
SQL> create table aa(emp varchar2(20),sp varchar2(20),sl numeric(5,0));表已创建。SQL> insert into aa values('张','显示器',1);已创建 1 行。SQL> insert into aa values('张','鼠标 ',5);已创建 1 行。SQL> insert into aa values('张','光驱 ',1);已创建 1 行。SQL> insert into aa values('李','键盘 ',3);已创建 1 行。SQL> insert into aa values('赵','显示器',3);已创建 1 行。SQL> declare col1 aa.sp%type; --定义类型
2 sqlstr varchar2(8000);
3 cursor c_try is select distinct sp from aa;
4 begin
5 sqlstr:='';
6 open c_try;
7 loop
8 fetch c_try into col1;
9 exit when c_try%notfound;
10 sqlstr:=sqlstr||', sum(decode(sp,'''||col1||''',sl,0)) as '||col1;
11 exit when c_try%notfound;
12 end loop;
13 close c_try;
14 sqlstr:='create table tt as select emp'||sqlstr||' from aa group by em
15 --tt为刚创建的一个保存结果的表
16 execute immediate sqlstr;
17 end;
18
19 /PL/SQL 过程已成功完成。SQL> select * from aa;EMP SP SL
-------------------- -------------------- ----------
张 显示器 1
张 鼠标 5
张 光驱 1
李 键盘 3
赵 显示器 3
----------------------------------------------------------------------------------------------------------------------------------------------
--执行
select * from tt;