【问题标题】:Combining 2 ORACLE Queries into 1 query将 2 个 ORACLE 查询合并为 1 个查询
【发布时间】:2015-02-11 08:54:57
【问题描述】:

所以我有 2 个查询,其中一个是使用第一个查询中的值的子查询。我需要把它变成 1 个查询,以便我可以把它们作为一个视图。所以第一个查询是,

    SELECT LEVEL WEEK_NUM_INCR,
           TO_CHAR (start_date + (LEVEL - 1) * 7, 'DD-MON-YYYY') START_WEEK_DATE,
           TO_CHAR (start_date + (LEVEL) * 7, 'DD-MON-YYYY') END_WEEK_DATE 
      FROM (SELECT PS.PROJECT_START_DT start_date,
                   PS.JOB_NAME JOB_NAME,
                   PS.PROJECT_END_DT end_date
              FROM PROJECT_SPAN PS
             WHERE PS.JOB_NAME = :JOBNAME) RS
CONNECT BY start_date + (LEVEL - 1) * 7 < end_date;

第二个查询是,

  SELECT SUM (DO.ONSITE_UPD_QTY) ONSITESUM,
         SUM (DO.ONSITE_UPD_QTY * MD.WEIGHT) TOTALONSITEWEIGHT,
    FROM PROJECT P
         LEFT OUTER JOIN DTL_ERC_UPD@WELTES_SITEMON_LINK DO
            ON DO.PROJECT_NAME = P.PROJECT_NAME
         LEFT OUTER JOIN MASTER_DRAWING MD ON MD.HEAD_MARK = DO.HEAD_MARK
   WHERE     DO.UPD_DATE BETWEEN TO_DATE (:STARTDATE, 'DD-MON-YYYY')
                             AND TO_DATE (:ENDDATE, 'DD-MON-YYYY')
         AND P.PROJECT_NO = :PROJNO
GROUP BY P.PROJECT_NO;

第二个查询使用第一个查询 START_WEEK_DATE 和 END_WEEK_DATE 中的值 :STARTDATE 和 :ENDDATE 作为第一个查询中特定日期范围的范围值。

所以php中的整个方法可以在http://pastie.org/9938791中看到 但不可能将它们放在一起并在 JSON 中分配值。请帮我结合这两个查询.. 我真的很感激

【问题讨论】:

  • 您不能只查看第一个查询吗?还是使用 WITH 构造?
  • 我尝试了视图,但问题出在 JOBNAME...
  • 周范围一直在递归循环中运行

标签: php sql oracle


【解决方案1】:

您可以使用 WITH 子句将第一个查询用作子查询:

http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_10002.htm

WITH JOBNAME AS (1stQuery)
SELECT-CLAUSE USING JOBNAME as Inlineview (in the FROM-Condition).

例如http://oracle-base.com/articles/misc/with-clause.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    相关资源
    最近更新 更多