`

oracle中的WITH关键字,相当于是试图

 
阅读更多

WITH V_DOCID AS
 (
 SELECT b.doc_id id
    FROM tb_oa_doc_base b
    join tb_oa_doc_recv c
      on b.doc_id = c.doc_id
   where b.flow_status <> 0
     and ((c.sec_level = 4 and is_pub = 1) or
         b.doc_id in (select doc_id
                         from TB_OA_DOC_RECV_PER a
                        where 1=1
                          and a.is_readed = 1))
      or b.doc_id in (select w2.doc_id
                        from (select row_number() over(partition by w1.doc_id, w1.applay_id order by w1.doc_id, w1.applay_id) row_num,
                                     w1.doc_id,
                                     w1.applay_id
                                from (select t1.doc_id, t.applay_id
                                        from tb_wf_proc_log t
                                        join TB_OA_DOC_REF_PROC t1
                                          on t.processinst_id = t1.proinstid) w1) w2
                       where w2.row_num = 1 )
                       )
   select  *   from   V_DOCID      

 

 

-------------------------

2.两个with

--[9, 9, 133000, 133000]
with Month as
 (select max(ItemCode),
         max(ItemName),
         t.QUOTA_ID,
         max(CLEAR_DATE),
         nvl(decode(v.PAYTYPE_ID,
                    2,
                    decode(v.PAYKIND_ID, 0, sum(v.PAY_MONEY))),
             0) as zf_money,
         nvl(decode(v.PAYTYPE_ID,
                    2,
                    decode(v.PAYKIND_ID, 2, sum(v.PAY_MONEY))),
             0) as gz_money,
         nvl(decode(v.PAYTYPE_ID,
                    2,
                    decode(v.PAYKIND_ID, 1, sum(v.PAY_MONEY))),
             0) as qt_money,
         (select sum(a.plan_sum)
            from tb_plan_info a
           where a.QUOTA_ID = v.QUOTA_ID
             and a.is_cancel = 0
             and v.PAYTYPE_ID = 3
             and extract(month from ORDER_DATE) =9) as xd_money,
         nvl(decode(v.PAYTYPE_ID, 3, sum(v.PAY_MONEY)), 0) as zc_money
    from vw_tb_pay_info v, vw_tb_quota_info t
   where extract(month from to_date(CLEAR_DATE, 'yyyy-mm-dd')) = 9
     and v.QUOTA_ID = t.QUOTA_ID
     and v.PAYTYPE_ID != 5
     and v.AGENCY_CODE ='133000'
     and v.IS_CANCEL = 0
     and v.IS_CLEAR = 1
   group by t.QUOTA_ID, v.QUOTA_ID, v.PAYKIND_ID, v.PAYTYPE_ID),
YEAR AS
 (select max(ItemCode) ItemCode,
         max(ItemName) ItemName,
         t.QUOTA_ID QUOTA_ID1,
         max(CLEAR_DATE) CLEAR_DATE1,
         nvl(decode(v.PAYTYPE_ID,
                    2,
                    decode(v.PAYKIND_ID, 0, sum(v.PAY_MONEY))),
             0) as zf_money1,
         nvl(decode(v.PAYTYPE_ID,
                    2,
                    decode(v.PAYKIND_ID, 2, sum(v.PAY_MONEY))),
             0) as gz_money1,
         nvl(decode(v.PAYTYPE_ID,
                    2,
                    decode(v.PAYKIND_ID, 1, sum(v.PAY_MONEY))),
             0) as qt_money1,
         nvl(decode(v.PAYTYPE_ID, 3, max(t.COLLECT_SUM)), 0) as xd_money1,
         nvl(decode(v.PAYTYPE_ID, 3, sum(v.PAY_MONEY)), 0) as zc_money1,
         nvl(decode(v.PAYTYPE_ID, 3, max(t.AVAILMONEY)), 0) as AVAILMONEY1
    from vw_tb_pay_info v, vw_tb_quota_info t
   where v.QUOTA_ID = t.QUOTA_ID
     and v.PAYTYPE_ID != 5
     and v.AGENCY_CODE = '133000'
     and v.IS_CANCEL = 0
     and v.IS_CLEAR = 1
   group by t.QUOTA_ID, v.QUOTA_ID, v.PAYKIND_ID, v.PAYTYPE_ID)
SELECT rownum row_num, MONTH.*, YEAR.*
  FROM MONTH, YEAR
 where MONTH.quota_id = YEAR.quota_id1

 

分享到:
评论

相关推荐

    Oracle 错误集选

    在某些Oracle版本中,特定用户可能无权使用WITH GRANT OPTION。这通常需要管理员干预,以授予适当的权限。 ### ORA-01778: 超出最大子查询的嵌套层 当子查询的嵌套层数超过限制时,会触发此错误。优化查询逻辑,...

    oracle error message

    - **原因**:可能是由于试图向具有唯一索引或唯一约束的列中插入重复值。 - **解决方案**: - 检查要插入的数据是否符合表的定义。 - 如果有必要,删除或更新导致冲突的行。 - 确认数据的正确性和完整性后再...

    Oracle创建视图(View)

    WITH READ ONLY :默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    ORACLE用户是学习ORACLE数据库中的基础知识,下面就介绍下类系统常用的默认ORACLE用户: 1. sys用户:超级用户,完全是个SYSDBA(管理数据库的人)。拥有dba,sysdba,sysoper等角色或权限。是oracle权限最高的用户,...

    oracle中UPDATE nowait 的使用方法介绍

    在Oracle数据库中,`UPDATE NOWAIT` 是一个用于事务处理的关键字,它允许你更新一行数据,但在数据被其他事务锁定时,它不会等待而是立即返回一个错误信息。这个特性对于处理多线程并发和确保数据一致性至关重要。...

    ORACLE11g 1Z0-051全真试题 201112

    - 视图的 `SELECT` 语句中没有 `DISTINCT` 关键字。 **选项分析**: - **A. CREATE VIEW v3 AS SELECT * FROM SALES WHERE cust_id=2034 WITH CHECK OPTION;** - 此视图可以执行 DML 操作,因为它仅仅过滤了特定的...

    oracle 视图权限 oracle 创建视图权限不足

    此外,还可以通过其他方式来管理权限,比如使用`WITH GRANT OPTION`关键字,这样被授予的用户不仅可以创建视图,还可以将这个权限进一步授予其他用户。或者,可以使用`DENY`语句撤销特定权限,以确保数据库的安全性...

    数据库编程期末考试.docx

    如果试图在基础表不存在时创建视图,会报错,除非使用特定选项(如Oracle中的`CREATE OR REPLACE VIEW ... AS SELECT ...`)。 4. **查询视图**: - 使用视图查询数据库就像查询普通表一样,使用`SELECT`语句即可...

    菜鸟级SQL21天自学通

    3. 条件表达式和流程控制:包括STARTING WITH、EXISTS、ANY和ALL等关键字的使用,它们可以在SQL查询中引入复杂的条件逻辑。 4. 数据操作:介绍如何使用INSERT、UPDATE和DELETE语句来对数据库中的数据进行增加、修改...

    java面试800题

    Q0034 给定了一些创建数据库试图的SQL语句问什么条件下才可以对试图执行修改,增加,删除操作 特别强调了WITH CHECK OPTION这个约束的含义,使用,产生的不同结果。参考Oracle 视图的基本知识,单个表上的视图,多...

    vfp6.0系统免费下载

    答案: 6.0 版中做了一些服务程序的改进,包括支持套件模型线程以使服务程序的比例范围更佳,并使其在 Active Server Page 和 Transaction Server 中的运行更平滑。类型库的改进使 Visual Basic 等应用程序可以在命令...

Global site tag (gtag.js) - Google Analytics