惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
GbyAI
GbyAI
Google DeepMind News
Google DeepMind News
Jina AI
Jina AI
B
Blog
aimingoo的专栏
aimingoo的专栏
酷 壳 – CoolShell
酷 壳 – CoolShell
T
The Blog of Author Tim Ferriss
Last Week in AI
Last Week in AI
月光博客
月光博客
H
Help Net Security
V
Visual Studio Blog
量子位
A
About on SuperTechFans
博客园 - Franky
人人都是产品经理
人人都是产品经理
N
Netflix TechBlog - Medium
云风的 BLOG
云风的 BLOG
雷峰网
雷峰网
Martin Fowler
Martin Fowler
Microsoft Security Blog
Microsoft Security Blog
博客园 - 叶小钗
P
Proofpoint News Feed
MongoDB | Blog
MongoDB | Blog

博客园 - 疯一样的自由

gis学习资料 40种网页常用小技巧(JavaScript) - 疯一样的自由 - 博客园 网站头像: favicon.ico Javascript 动态菜单menu 利用 SQL Server Reporting Services 从应用程序生成用户友好的报表 Reporting Services API 报表服务中的编程 使用Not Exists实现返回条件为一个值或空值的数据 使用:EXISTS (Transact-SQL) 蜡人张 Reporting service 文件列表输出到文件 - 疯一样的自由 - 博客园 删除XP中的保存用户和密码 Oracle错误解决:ora-12638:身份证明检索失败 ASP.NET Oracle数据库连接 - 疯一样的自由 - 博客园 Oracle数据操作和控制语言详解(SQL) Oracle function 集 oracle中的connect by 在sql server中实现 PL/SQL入门教程 SQL与Oracle对比
Oracle中Decode()函数使用技巧
疯一样的自由 · 2006-11-30 · via 博客园 - 疯一样的自由

·软件环境:
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,表结构为:
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)),
    sum(

decode

(substrb(month,5,2),'05',sell,0)),
    sum(

decode

(substrb(month,5,2),'06',sell,0)),
    sum(

decode

(substrb(month,5,2),'07',sell,0)),
    sum(

decode

(substrb(month,5,2),'08',sell,0)),
    sum(

decode

(substrb(month,5,2),'09',sell,0)),
    sum(

decode

(substrb(month,5,2),'10',sell,0)),
    sum(

decode

(substrb(month,5,2),'11',sell,0)),
    sum(

decode

(substrb(month,5,2),'12',sell,0))
    from sale
    group by substrb(month,1,4);