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关键字的使用的更多相关文章

  1. 如何查询oracle中的关键字

    如何查询oracle中的关键字,执行: select * from v$reserved_words

  2. 【oracle】Oracle中as关键字

    在Oracle中as关键字不能用于指定表的别名 在Oracle中指定表的别名时只需在原有表名和表的别名之间用空格分隔即可 但as关键字可以用于指定列的别名 但在存储过程中如果列的别名与原有列名相同,在 ...

  3. Oracle中的关键字

    NVL和COALESCE的区别: nvl(COMMISSION_PCT,0)如果第一个参数为null,则返回第二个参数如果第一个参数为非null,则返回第一个参数 COALESCE(EXPR1,EXP ...

  4. ORACLE中ESCAPE关键字用法

    ESCAPE用法 1.使用 ESCAPE 关键字定义转义符: 在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符. 2.ESCAPE 'escape_character'  允许在字符串中搜 ...

  5. Oracle中查询关键字select--from--where--group by--having--order by执行顺序

    select--from--where--group by--having--order by 这6个查询关键字的执行顺序: 1.from组装来自不同数据源的数据:2.where基于指定的条件对记录行 ...

  6. oracle中更新关键字merge和 with as关键字

    merge是oracle特有的语句,两表关联操作(增.删.改)就效率非常高 merge into table_name alias1 using (table|view|sub_query) alia ...

  7. Oracle中函数关键字简介

    常用的语法:select--from--where--group by--having--order by 1.分组子句group by +con 按什么分组 2.having子句  对上面分组的数据 ...

  8. Oracle中如何实现Mysql的两表关联update操作

    在看<MySQL 5.1参考手册>的时候,发现MySQL提供了一种两表关联update操作.原文如下: UPDATE items,month SET items.price=month.p ...

  9. 【Oracle】oracle中rownum的说明及使用技巧

    oracle中常用到ROWNUM,所以做一些本人对rownum的一些认识和使用技巧的记录,以便备查. 一.rownum的说明 rownum是oracle特有的一个关键字. (1)对于基表,在inser ...

随机推荐

  1. 修改K3数据是简介方法

    如  及时库存里有个别产品库存没有库位  是*号的 这个时候  我们创建一个其他出库单,把这个没有库位的产品输入进去,库位随便写个 如002 保存,审核不了的  会提示负库存 去后台找到此单据号 修改 ...

  2. android aidl通信 RemoteCallbackList客户端注册回调

    RemoteCallbackList 声明 public class RemoteCallbackList<E extends IInterface> 情况 在AIDL中客户端向服务端注册 ...

  3. 03.枚举和string以及int类型之间的转换

    练习1:   将枚举类型强转成int类型 namespace _04.枚举类型的练习01 { //声明一个QQState类型的枚举 public enum QQState { OnLine, OffL ...

  4. C# Attribute应用:类签名

    在应用别人接口的时候,总是要用签名,很是不理解签名这是怎么知道做的.通过对Attribute的学习了解.大体可以用Attribute来做签名应用. 具体过程如下: 首先我们要先定义一个类,该类继承At ...

  5. 【数据库】9.0 MySQL入门学习(九)——获得数据库和表的信息、日期计算、查询、选择特殊列

    1.0 SELECT语句用来从数据表中检索信息. SELECT what_to_select FROM which_table WHERE conditions_to_satisfy; what_to ...

  6. angular2-生命周期钩子函数

    生命周期的顺序 当Angular使用构造函数新建一个组件或指令后,就会按下面的顺序在特定时刻调用这些生命周期钩子方法: 钩子 目的和时机 ngOnChanges() 当Angular(重新)设置数据绑 ...

  7. 编写可维护的 Gruntfile.js

    load-grunt-tasks 插件 首先介绍下 load-grunt-tasks 这个插件. 我们一般都会把所有用到的插件以及插件的配置写到 Gruntfile.js 里面,对于小项目来说这个文件 ...

  8. 让div跟按键走,基本键码

    ---恢复内容开始--- 想要快速的做这样一个简单效果,首先要明白它的原理; 样式设置的重点,就是要跟上次拖拽一样,给该元素绝对定位, 事件就是onkeydown,事件,通过判断键码,来执行: < ...

  9. PLSQL Developer中几个功能

    1,登录后默认自动选中My Objects 默认情况下,PLSQL Developer登录后,Brower里会选择All objects,如果你登录的用户是dba,要展开tables目录,正常情况都需 ...

  10. CCF201712-1 最小差值

    试题编号: 201712-1 试题名称: 最小差值 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值 ...