[英]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.