当前位置: 首页 > news >正文

Oracle中Decode()函数使用技巧

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

相关文章:

  • PLC无线通讯方案详解GRM110
  • 围绕EMF探索(5)之深入Validation框架
  • 2018 年 5 月 1 日西安 1374 架无人机编队表演出现失误的原因是什么?
  • GNSS原理及技术(三)——差分定位技术
  • DBC文件
  • C语言切割多层字符串(strtok_r strtok使用方法)
  • 如何组织论文
  • QT使用MySQL报错:QSqlDatabase: QMYSQL driver not loaded
  • Qt 的Sqlite 在成功打开后报错
  • 项目开发中源代码树的组织
  • qt 在sqlite inster 数据时候报错
  • 制作一颗菜单树
  • 关于数据库主键和外键(终于弄懂啦)
  • Registered a new domain named ferrymanfractal.com
  • sqlite建表语句(特别是外键问题)
  • Angularjs之国际化
  • C# 免费离线人脸识别 2.0 Demo
  • css属性的继承、初识值、计算值、当前值、应用值
  • docker容器内的网络抓包
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • Golang-长连接-状态推送
  • Java编程基础24——递归练习
  • MySQL几个简单SQL的优化
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • sessionStorage和localStorage
  • Solarized Scheme
  • Vue2.0 实现互斥
  • 计算机在识别图像时“看到”了什么?
  • 聊聊hikari连接池的leakDetectionThreshold
  • 树莓派 - 使用须知
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 微信开源mars源码分析1—上层samples分析
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 一些关于Rust在2019年的思考
  • 用jQuery怎么做到前后端分离
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​油烟净化器电源安全,保障健康餐饮生活
  • !!java web学习笔记(一到五)
  • #QT(一种朴素的计算器实现方法)
  • #传输# #传输数据判断#
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)平衡树
  • (轉貼) UML中文FAQ (OO) (UML)
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .NET命令行(CLI)常用命令
  • @RequestMapping处理请求异常