簡體   English   中英

合並兩個Oracle查詢

[英]Combine Two Oracle Queries

我是oracle / sql的初學者。 我可以編寫基本查詢,但是現在我已經不知所措了。 我有兩個查詢要合並。 我正在尋找的輸出是這樣的(一行):

批次編號
狀態
分鍾
頁數

這是兩個單獨的查詢:

   SELECT aq.batchnum, aq.status, (dateended - datestarted) * 24 * 60 minutes
    FROM archivedqueue aq INNER JOIN scanninglog sl ON aq.batchnum = sl.batchnum
   WHERE     aq.datestarted BETWEEN TO_DATE ('27-MAY-2014 00:00:00', 'dd-mon-yyyy hh24:mi:ss')
                                AND TO_DATE ('29-MAY-2014 23:59:59', 'dd-mon-yyyy hh24:mi:ss')
         AND sl.usernum = '3724'
         AND sl.actionnum = '200'
ORDER BY aq.batchnum DESC;


SELECT COUNT (*)
  FROM archivedqueue aq
       INNER JOIN itemdata id ON aq.batchnum = id.batchnum
       INNER JOIN itemdatapage idp ON idp.itemnum = id.itemnum
       INNER JOIN scanninglog sl ON aq.batchnum = sl.batchnum
 WHERE aq.batchnum = '648353' AND sl.actionnum = '202';

我正在嘗試做這樣的事情,但是我不確定如何將Batchnum從第1季度的結果鏈接到第2季度的查詢

    SELECT q1.batchnum,
       q1.status,
       q1.minutes,
       q2.page_count
  FROM (  SELECT aq.batchnum, aq.status, (dateended - datestarted) * 24 * 60 minutes
            FROM archivedqueue aq INNER JOIN scanninglog sl ON aq.batchnum = sl.batchnum
           WHERE     aq.datestarted BETWEEN TO_DATE ('27-MAY-2014 00:00:00',
                                                     'dd-mon-yyyy hh24:mi:ss')
                                        AND TO_DATE ('29-MAY-2014 23:59:59',
                                                     'dd-mon-yyyy hh24:mi:ss')
                 AND sl.usernum = '3724'
                 AND sl.actionnum = '200'
        ORDER BY aq.batchnum DESC) q1,
       (SELECT COUNT (*) page_count
          FROM archivedqueue aq
               INNER JOIN itemdata id ON aq.batchnum = id.batchnum
               INNER JOIN itemdatapage idp ON idp.itemnum = id.itemnum
               INNER JOIN scanninglog sl ON aq.batchnum = sl.batchnum
         WHERE sl.actionnum = '202' AND aq.batchnum = q1.batchnum) q2

給您非ANSI SQL版本,前提是您正在Oracle DB中運行(我更喜歡:)):

  SELECT aq.batchnum,
         aq.status,
         (dateended - datestarted) * 24 * 60 minutes,
         COUNT (*) page_count
    FROM archivedqueue aq,
         itemdata id,
         itemdatapage idp,
         (SELECT *
            FROM scanninglog
           WHERE usernum = '3724' AND actionnum IN ('200', '202')) sl
   WHERE     aq.batchnum = id.batchnum
         AND idp.itemnum = id.itemnum
         AND aq.batchnum = sl.batchnum
         AND aq.batchnum = '648353'
         AND aq.datestarted BETWEEN TO_DATE ('27-MAY-2014 00:00:00', 'dd-mon-yyyy hh24:mi:ss')
                                AND TO_DATE ('29-MAY-2014 23:59:59', 'dd-mon-yyyy hh24:mi:ss')
GROUP BY aq.batchnum, aq.status, (dateended - datestarted) * 24 * 60
ORDER BY aq.batchnum DESC;

我認為您想利用GROUP BY函數。 在不知道表結構等情況下很難確定,但是看起來可能像這樣:

SELECT aq.batchnum, aq.status, (dateended - datestarted)*24*60 Minutes, count(*)
FROM archivedqueue aq
     INNER JOIN scanninglog sl
     ON aq.batchnum = sl.batchnum
     INNER JOIN itemdata id
     ON aq.batchnum = id.batchnum
     INNER JOIN itemdatapage idp
     ON idp.itemnum = id.itemnum
WHERE (
      aq.datestarted 
      BETWEEN TO_DATE( '27-MAY-2014 00:00:00', 'dd-mon-yyyy hh24:mi:ss' ) 
      AND TO_DATE( '29-MAY-2014 23:59:59', 'dd-mon-yyyy hh24:mi:ss' )
      )
AND sl.usernum = '3724'
AND sl.actionnum = '200'
GROUP BY aq.batchnum, aq.status, (dateended - datestarted)*24*60
ORDER BY aq.batchnum DESC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM