Oracle中decode()函数的使用技巧

王朝oracle·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

decode()函数的使用技巧:

·软件环境:

1、windows nt4.0+Oracle 8.0.4

2、oracle安装路径为:c:\orant

·含义解释:

decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)

该函数的含义如下:

if 条件=值1 then

return(翻译值1)

elsif 条件=值2 then

return(翻译值2)

......

elsif 条件=值n then

return(翻译值n)

else

return(缺省值)

end if

· 使用方法:

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,表结构为:

monthchar(6)--月份

sellnumber(10,2)--月销售金额

现有数据为:

2000011000

2000021100

2000031200

2000041300

2000051400

2000061500

2000071600

2001011100

2002021200

2003011300

想要转化为以下结构的数据:

yearchar(4) --年份

month1number(10,2)--1月销售金额

month2number(10,2)--2月销售金额

month3number(10,2)--3月销售金额

month4number(10,2)--4月销售金额

month5number(10,2)--5月销售金额

month6number(10,2)--6月销售金额

month7number(10,2)--7月销售金额

month8number(10,2)--8月销售金额

month9number(10,2)--9月销售金额

month10number(10,2)--10月销售金额

month11number(10,2)--11月销售金额

month12number(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)),

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航