【发布时间】:2018-08-08 11:11:54
【问题描述】:
我想用这三个查询:
第一个查询:
SELECT
AMICOS.PNRREG.PN, Max(AMICOS.HISTORYSTOCKFLOAT.HISTORYDATE) AS lastissue
FROM
AMICOS.HISTORYSTOCKFLOAT
INNER JOIN
AMICOS.PNRREG ON AMICOS.HISTORYSTOCKFLOAT.PARTID = AMICOS.PNRREG.PARTID
WHERE
(((AMICOS.HISTORYSTOCKFLOAT.ACTION)='ISSUE') AND
((AMICOS.HISTORYSTOCKFLOAT.HISTORYDATE)<to_date('31032019','DDMMYYYY')+1))
GROUP BY
AMICOS.PNRREG.PN;
第二次查询:
SELECT
AMICOS.PNRREG.PN, Max(AMICOS.HISTORY.HISTORYDATE) AS lastissuehistory
FROM
AMICOS.HISTORY
INNER JOIN
AMICOS.PNRREG ON AMICOS.HISTORY.PARTID = AMICOS.PNRREG.PARTID
WHERE
(((AMICOS.HISTORY.HISTORYACTION)='ISSUE') AND
((AMICOS.HISTORY.HISTORYDATE)<to_date('31032019','DDMMYYYY')+1))
GROUP BY
AMICOS.PNRREG.PN;
第三次查询:
SELECT
AMICOS.PNRREG.PN, Max(AMICOS.HISTORYSTOCKFLOAT.HISTORYDATE) AS lastpurchase
FROM
AMICOS.HISTORYSTOCKFLOAT
INNER JOIN
AMICOS.PNRREG ON AMICOS.HISTORYSTOCKFLOAT.PARTID = AMICOS.PNRREG.PARTID
WHERE
(((AMICOS.HISTORYSTOCKFLOAT.HISTORYDATE)<to_date('31032019','DDMMYYYY')+1))
GROUP BY
AMICOS.PNRREG.PN, AMICOS.HISTORYSTOCKFLOAT.ACTION
HAVING
(((AMICOS.HISTORYSTOCKFLOAT.ACTION)='PURCHASE'));
最后一个查询将它们放在一起:
SELECT AMICOS.PNRREG.PN, AMICOS.IRCABCCAT.ABC_CATEGORY, AMICOS.IRC.PRIMUTILISATION, AMICOS.PNRREG.DESCRIPTION, AMICOS.HISTORYSTOCKFLOAT.ACCOUNTNO, AMICOS.HISTORYSTOCKFLOAT.HISTORYDATE, AMICOS.HISTORYSTOCKFLOAT.STOCK_FLOAT, AMICOS.HISTORYSTOCKFLOAT.STOCK_PRICE, AMICOS.HISTORYSTOCKFLOAT.STOCKVALUE, lastpurchase.lastpurchase, lastissue.lastissue, lastissuehistory.lastissuehistory
FROM ((AMICOS.PNRREG LEFT JOIN lastissuehistory ON AMICOS.PNRREG.PN = lastissuehistory.PN LEFT JOIN lastissue ON AMICOS.PNRREG.PN = lastissue.PN)
LEFT JOIN lastpurchase ON AMICOS.PNRREG.PN = lastpurchase.PN);
我尝试了 UNION, JOIN 将这些查询放在一起,以从最后一个查询中获得一个结果,该结果依赖于其他三个查询。
当我预定义了前三个查询的查询时,它可以在 MS Access 上运行。但它不适用于 Oracle SQL Developer 查询工具。
我怎样才能做到这一点?
【问题讨论】: