ORAcle比较大小和表结构转化(decode,sign).docVIP

  • 34
  • 0
  • 约6.14千字
  • 约 9页
  • 2017-05-08 发布于四川
  • 举报

ORAcle比较大小和表结构转化(decode,sign).doc

ORAcle比较大小和表结构转化(decode,sign)

比较大小与表结构转化(decode,sign) ???? 使用方法: 1、比较大小 select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值 sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1 例如: 变量1=10,变量2=20 则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。 2、表、视图结构转化 现有一个商品销售表sale,表结构为: month char(6) --月份 sell number(10,2) --月销售金额 现有数据为: 200001 1000 200002 1100 200003 1200 200004 1300 200005 1400 200006 1500 200007 1600 200101 1100 200202 1200 200301 1300 想要转化为以下结构的数据: year char(4) --年份 month1 number(10,2) --1月销售金额 month2 number(10,2) --2月销售金额 month3 number(10,2) --3月销售金额 month4 number(10,2) --4月销售金额 month5 number(10,2) --5月销售金额 month6 number(10,2) --6月销售金额 month7 number(10,2) --7月销售金额 month8 number(10,2) --8月销售金额 month9 number(10,2) --9月销售金额 month10 number(10,2) --10月销售金额 month11 number(10,2) --11月销售金额 month12 number(10,2) --12月销售金额 结构转化的SQL语句为: create or replace view v_sale(year,month1,month2,month3,month4,month5,month6,month7,month8,month9,month10,month11,month12) as select substrb(month,1,4), sum(decode(substrb(month,5,2),01,sell,0)), sum(decode(substrb(month,5,2),02,sell,0)), sum(decode(substrb(month,5,2),03,sell,0)), sum(decode(substrb(month,5,2),04,sell,0)), ?? 在数据库研发的过程当中,有非常多时候需要将行转换成列或将列转换成行来显示数据,而往往我们在建立表结构时不能根据显示的需求来保存数据,于是乎只能在保存数据之后做一些必要的操作(比方说:建立视图等)来达到显示的目的。 ?????? 下面用一个常见的数据显示来说明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

文档评论(0)

1亿VIP精品文档

相关文档