分类: Oracle
2008-05-23 22:24:31
来源: |
|
在数据库开发的过程当中,有很多时候需要将行成列或者将列转换成行来显示数据,而往往我们在建立表结构时不能根据显示的要求来保存数据,于是乎只能在保存数据之后做一些必要的(比方说:建立视图等)来达到显示的目的。 下面用一个常见的数据显示来说明decode函数的用法。就是成绩单的显示,这个是教学管理系统中最常见的。我想做开发的人员都遇到过这个,而且在期间也是常常接触成绩单,显示的是:姓名、语文、数学等 实现脚本如下(cjd.sql): --建表 create table stud ( sid varchar2(10), kcbm varchar2(10), cj int ); --插入测试数据 insert into stud values(’1’,’语文’,80); insert into stud values(’2’,’数学’,90); insert into stud values(’3’,’’,100); commit; --创建视图,decode用法 create or replace view cjd as select sid, decode(kcbm,’语文’,cj,0) 语文, decode(kcbm,’数学’,cj,0) 数学, decode(kcbm,’英语’,cj,0) 英语 from stud order by sid; --显示数据 select * from cjd; 执行过程如下: SQL> create table stud(sid varchar2(10), 2 kcbm varchar2(10), 3 cj int); 表已创建。 SQL> insert into stud values(’1’,’语文’,80); 已创建 1 行。 SQL> insert into stud values(’2’,’数学’,90); 已创建 1 行。 SQL> insert into stud values(’3’,’英语’,100); 已创建 1 行。 SQL> commit; 提交完成。 SQL> create or replace view cjd as 2 select sid, 3 decode(kcbm,’语文’,cj,0) 语文, 4 decode(kcbm,’数学’,cj,0) 数学, 5 decode(kcbm,’英语’,cj,0) 英语 6 from stud 7 order by sid; 视图已建立。 SQL> select * from cjd; SID 语文 数学 英语 ---------- ---------- ---------- ---------- 1 80 0 0 2 0 90 0 3 0 0 100 |