decode函数:Oracle中Decode()函数使用技巧来源: 发布时间:星期三, 2008年12月17日 浏览:11次 评论:0
Oracle中Decode使用窍门技巧
= [ft=,,] [ft=#0000ff,,]decode 使用窍门技巧 [ft=,,]·软件Software环境: [ft=,,]1、Windows NT4.0+ORACLE 8.0.4 [ft=,,]2、ORACLE安装路径为:C:ORANT [ft=,,]·含义解释: [ft=,,] [ft=#0000ff,,]decode (条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值) [ft=,,]该含义如下: [ft=,,]IF 条件=值1 THEN [ft=,,] RETURN(翻译值1) [ft=,,]ELSIF 条件=值2 THEN [ft=,,] RETURN(翻译值2) [ft=,,] ...... [ft=,,]ELSIF 条件=值n THEN [ft=,,] RETURN(翻译值n) [ft=,,]ELSE [ft=,,] RETURN(缺省值) [ft=,,]END IF [ft=,,]· 使用思路方法: [ft=,,]1、比较大小 [ft=,,]select [ft=#ff0000,,]decode (sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值 [ft=,,]sign根据某个值是0、正数还是负数分别返回0、1、-1 [ft=,,]例如: [ft=,,]变量1=10变量2=20 [ft=,,]则sign(变量1-变量2)返回-1 [ft=#ff0000,,]decode 解码结果为“变量1”达到了取较小值目 [ft=,,]2、表、视图结构转化 [ft=,,]现有个商品销售表sale表结构为: [ft=,,]month char(6) --月份 [ft=,,]sell number(10,2) --月销售金额 [ft=,,]现有数据为: [ft=,,]200001 1000 [ft=,,]200002 1100 [ft=,,]200003 1200 [ft=,,]200004 1300 [ft=,,]200005 1400 [ft=,,]200006 1500 [ft=,,]200007 1600 [ft=,,]200101 1100 [ft=,,]200202 1200 [ft=,,]200301 1300 [ft=,,]想要转化为以下结构数据: [ft=,,]year char(4) --年份 [ft=,,]month1 number(10,2) --1月销售金额 [ft=,,]month2 number(10,2) --2月销售金额 [ft=,,]month3 number(10,2) --3月销售金额 [ft=,,]month4 number(10,2) --4月销售金额 [ft=,,]month5 number(10,2) --5月销售金额 [ft=,,]month6 number(10,2) --6月销售金额 [ft=,,]month7 number(10,2) --7月销售金额 [ft=,,]month8 number(10,2) --8月销售金额 [ft=,,]month9 number(10,2) --9月销售金额 [ft=,,]month10 number(10,2) --10月销售金额 [ft=,,]month11 number(10,2) --11月销售金额 [ft=,,]month12 number(10,2) --12月销售金额 [ft=,,]结构转化SQL语句为: [ft=,,]create or replace view [ft=,,]v_sale(year,month1,month2,month3,month4,month5,month6,month7,month8,month9,month10,month11,month12) [ft=,,]as [ft=,,] select [ft=,,] substrb(month,1,4), [ft=,,] sum( [ft=#ff0000,,]decode (substrb(month,5,2),'01',sell,0)), [ft=,,] sum( [ft=#ff0000,,]decode (substrb(month,5,2),'02',sell,0)), [ft=,,] sum( [ft=#ff0000,,]decode (substrb(month,5,2),'03',sell,0)), [ft=,,] sum( [ft=#ff0000,,]decode (substrb(month,5,2),'04',sell,0)), [ft=,,] sum( [ft=#ff0000,,]decode (substrb(month,5,2),'05',sell,0)), [ft=,,] sum( [ft=#ff0000,,]decode (substrb(month,5,2),'06',sell,0)), [ft=,,] sum( [ft=#ff0000,,]decode (substrb(month,5,2),'07',sell,0)), [ft=,,] sum( [ft=#ff0000,,]decode (substrb(month,5,2),'08',sell,0)), [ft=,,] sum( [ft=#ff0000,,]decode (substrb(month,5,2),'09',sell,0)), [ft=,,] sum( [ft=#ff0000,,]decode (substrb(month,5,2),'10',sell,0)), [ft=,,] sum( [ft=#ff0000,,]decode (substrb(month,5,2),'11',sell,0)), [ft=,,] sum( [ft=#ff0000,,]decode (substrb(month,5,2),'12',sell,0)) [ft=,,] from sale [ft=,,] group by substrb(month,1,4); 0
相关文章
读者评论
发表评论 |