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

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
U
Unit 42
Google DeepMind News
Google DeepMind News
博客园 - 司徒正美
Y
Y Combinator Blog
F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
T
Tailwind CSS Blog
G
Google Developers Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
罗磊的独立博客
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
MyScale Blog
MyScale Blog
N
Netflix TechBlog - Medium
Microsoft Security Blog
Microsoft Security Blog
GbyAI
GbyAI
P
Proofpoint News Feed
Jina AI
Jina AI
B
Blog RSS Feed
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志
D
Docker

博客园 - leup

一个硬盘的故事 Orcale 临时表 SQL Server 与Oracle的不同点(从微观上) oracle 日期函数介绍 Oracle SQLPLUS命令大全 Oracle 自动生成编号(实现sqlserver自增长字段) Oracle 函数介绍之 分析函数 Oracle 表内部字段产生树状结构的处理 oracle与sqlserver比较 Nhibernate开发资料收集 OWC winform Sample Demo 创建DataTable,并填充数据,模拟数据库中的表 GridView 使用技巧收集 【转】asp.net2.0学习历程 菜鸟到中级程序员的飞跃---30本好书点评 【转】ASP.NET2.0轻松搞定统计图表 【转】ASP.NET2.0 文件图片处理1 ASP.NET2.0 遍历文件夹下所有图片 ASP.NET2.0 ReportingServices 整理1 【转】C#优化字符串操作
Oracle中Decode()函数使用技巧
leup · 2007-11-18 · via 博客园 - leup

·软件环境:
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);