Oracle中with关键字的使用
open p_cr1 for
with sqla as
(select d.*,
(select c.STATICMONTH
from ly_zg_jzfbtstatic c
where c.ID = d.STATIC_ID) as STATICMONTH
from tablename1 d
where d.STATIC_ID in
(select r.ID
from ly_zg_jzfbtstatic r
where to_char(r.STATICMONTH, 'yyyy') = varYear)
and d.DISTNAME = '合计'),
sqlb as
(select d.*,
(select c.STATICMONTH
from ly_zg_lzzfbtstatic c
where c.ID = d.STATIC_ID) as STATICMONTH
from tablename2 d
where d.STATIC_ID in
(select r.ID
from ly_zg_lzzfbtstatic r
where to_char(r.STATICMONTH, 'yyyy') = varYear)
and d.DISTNAME = '合计'),
sqlc as
(select d.*,
(select c.STATICMONTH
from ly_zg_lzfbtstatic c
where c.ID = d.STATIC_ID) as STATICMONTH
from tablename3 d
where d.STATIC_ID in
(select r.ID
from ly_zg_lzfbtstatic r
where to_char(r.STATICMONTH, 'yyyy') = varYear)
and d.DISTNAME = '合计'),
sqld as
(select a.STATICMONTH,
(a.newscount + b.newscount + c.newscount) newscount,
(a.SYCOUNT + b.SYCOUNT + c.SYCOUNT) SYCOUNT,
(a.NEWGCOUNT + b.NEWGCOUNT + c.NEWGCOUNT) NEWGCOUNT,
(a.GYCOUNT + b.GYCOUNT + c.GYCOUNT) GYCOUNT,
(a.MSCCOUNT + b.MSCCOUNT + c.MSCCOUNT) MSCCOUNT,
(a.MGZFCOUNT + b.MGZFCOUNT + c.MGZFCOUNT) MGZFCOUNT,
(c.MSCCOUNT + c.MGZFCOUNT) lzfMSCCOUNT,
(b.MSCCOUNT + b.MGZFCOUNT) lzzfMSCCOUNT,
(a.MSCCOUNT + a.MGZFCOUNT) jzfMSCCOUNT,
(a.newscount + b.newscount + c.newscount + a.NEWGCOUNT +
b.NEWGCOUNT + c.NEWGCOUNT) sum1,
(a.MSCCOUNT + b.MSCCOUNT + c.MSCCOUNT + a.MGZFCOUNT +
b.MGZFCOUNT + c.MGZFCOUNT) sum2 from sqla a, sqlb b, sqlc c
where a.STATICMONTH = b.STATICMONTH
and c.STATICMONTH = a.STATICMONTH)
--
select (select newscount
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/01/01') as JAN,
(select newscount
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/02/01') as FEB,
(select newscount
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/03/01') as MAR,
(select newscount
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/04/01') as APRIL,
(select newscount
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/05/01') as MAY,
(select newscount
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/06/01') as JUNE,
(select newscount
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/07/01') as JULY,
(select newscount
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/08/01') as AUJUST,
(select newscount
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/09/01') as SEPT,
(select newscount
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/10/01') as OCT,
(select newscount
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/11/01') as NOV,
(select newscount
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/12/01') as DECE
from dual
union all
--
select null as JAN,
null as FEB,
null as MAR,
null as APRIL,
null as MAY,
null as JUNE,
null as JULY,
null as AUGUST,
null as SEPT,
null as OCT,
null as NOV,
null as DECE
from dual
union all
--
select (select SYCOUNT
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/01/01') as JAN,
(select SYCOUNT
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/02/01') as FEB,
(select SYCOUNT
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/03/01') as MAR,
(select SYCOUNT
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/04/01') as APRIL,
(select SYCOUNT
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/05/01') as MAY,
(select SYCOUNT
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/06/01') as JUNE,
(select SYCOUNT
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/07/01') as JULY,
(select SYCOUNT
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/08/01') as AUJUST,
(select SYCOUNT
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/09/01') as SEPT,
(select SYCOUNT
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/10/01') as OCT,
(select SYCOUNT
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/11/01') as NOV,
(select SYCOUNT
from sqld
where to_char(STATICMONTH, 'yyyy/mm/dd') = varYear || '/12/01') as DECE
from dual;
当现有的表不满足我们写如意sql,或者是根据现有的表写出如意sql太过复杂,所以Oracle为我们提出了with关键字,帮我们提供了很大的帮助
住,with后面的虚拟表必须用圆括号包起来,并且括号后面必须紧连接select关键字
并且用union all 连接的行中,每行中的列数据类型必须一致,注:null兼容任意数据类型
ye。。。。。。
Oracle中with关键字的使用的更多相关文章
- 如何查询oracle中的关键字
如何查询oracle中的关键字,执行: select * from v$reserved_words
- 【oracle】Oracle中as关键字
在Oracle中as关键字不能用于指定表的别名 在Oracle中指定表的别名时只需在原有表名和表的别名之间用空格分隔即可 但as关键字可以用于指定列的别名 但在存储过程中如果列的别名与原有列名相同,在 ...
- Oracle中的关键字
NVL和COALESCE的区别: nvl(COMMISSION_PCT,0)如果第一个参数为null,则返回第二个参数如果第一个参数为非null,则返回第一个参数 COALESCE(EXPR1,EXP ...
- ORACLE中ESCAPE关键字用法
ESCAPE用法 1.使用 ESCAPE 关键字定义转义符: 在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符. 2.ESCAPE 'escape_character' 允许在字符串中搜 ...
- Oracle中查询关键字select--from--where--group by--having--order by执行顺序
select--from--where--group by--having--order by 这6个查询关键字的执行顺序: 1.from组装来自不同数据源的数据:2.where基于指定的条件对记录行 ...
- oracle中更新关键字merge和 with as关键字
merge是oracle特有的语句,两表关联操作(增.删.改)就效率非常高 merge into table_name alias1 using (table|view|sub_query) alia ...
- Oracle中函数关键字简介
常用的语法:select--from--where--group by--having--order by 1.分组子句group by +con 按什么分组 2.having子句 对上面分组的数据 ...
- Oracle中如何实现Mysql的两表关联update操作
在看<MySQL 5.1参考手册>的时候,发现MySQL提供了一种两表关联update操作.原文如下: UPDATE items,month SET items.price=month.p ...
- 【Oracle】oracle中rownum的说明及使用技巧
oracle中常用到ROWNUM,所以做一些本人对rownum的一些认识和使用技巧的记录,以便备查. 一.rownum的说明 rownum是oracle特有的一个关键字. (1)对于基表,在inser ...
随机推荐
- tomcat8.5.8遇到的两个问题
压力测试场景,前端nginx反向代理到4个tomcat实例,在其中的一个实例上产生了大量的countDownConnection Incorrect connection count警告 WARNIN ...
- 深入理解JavaScript系列(29):设计模式之装饰者模式
介绍 装饰者提供比继承更有弹性的替代方案. 装饰者用用于包装同接口的对象,不仅允许你向方法添加行为,而且还可以将方法设置成原始对象调用(例如装饰者的构造函数). 装饰者用于通过重载方法的形式添加新功能 ...
- [LeetCode]27. Remove Element移除元素
Given an array nums and a value val, remove all instances of that value in-place and return the new ...
- mysql忘记root密码的解决方法
Windows下mysql忘记root密码的解决方法 1. 首先检查mysql服务是否启动,若已启动则先将其停止服务,可在开始菜单的运行,使用命令:net stop mysql 或者在windows任 ...
- 1.HTML小结
HTML 基本文档 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...
- 微信小程序入门案例
本文通过具体的实例记录微信小程序的入门知识. 1.特点 不需要安装 依赖微信应用 更接近原生APP 丰富的框架及API可达到快速开发的目的 2.工具使用 在开发的过程中可以使用微信开发者工具,更加直观 ...
- cordova 开发 ios app 简要流程
1 安装node.js环境 官网: http://nodejs.org/ 点击[install],会下载mac的安装包.正常安装即可 2 安装cordova:npm install -g cordo ...
- wxpython 按钮等事件的触发
1.按钮事件的触发 方法中第二个参数为event
- Android应用开发基础之八:广播与服务(二)
服务两种启动方式 startService:服务被启动之后,跟启动它的组件没有一毛钱关系 bindService:跟启动它的组件同生共死 绑定服务和解绑服务的生命周期方法:onCreate->o ...
- 通过 PowerShell 的方式增加虚拟机终结点
关于虚拟机终结点的概念请阅读:如何设置虚拟机的终结点 本文包含以下内容(本文在名称为"pstest"的虚拟机做测试): 通过 PowerShell 的方式增加终结点 通过 Powe ...