在
数据库开发的过程当中,有很多时候需要将行转换成列或者将列转换成行来显示数据,而往往我们在建立表结构时不能根据显示的要求来保存数据,于是乎只能在保存数据之后做一些必要的操作(比方说:建立视图等)来达到显示的目的。    
       下面用一个常见的数据显示来说明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              xx          xx             xx