我有一张保留产品成本的表。我想获得平均成本和上次购买每个产品的发票。选择的Oracle子查询
我的解决办法创造一个子选择来获得最后的购买发票但不幸的是我得到
ORA-00904: "B"."CODPROD": invalid identifier
我的查询是
SELECT (b.cod_aux) product,
-- here goes code to get average cost,
(SELECT round(valorultent, 2)
FROM (SELECT valorultent
FROM pchistest
WHERE codprod = b.codprod
ORDER BY dtultent DESC)
WHERE ROWNUM = 1)
FROM pchistest a, pcembalagem b
WHERE a.codprod = b.codprod
GROUP BY a.codprod, b.cod_aux
ORDER BY b.cod_aux
总之我做的什么子选择正在下订单并获得产品的第一行b.codprod
编辑您的问题,并提供样本数据和期望的结果。目前还不清楚你想要做什么。例如,哪列代表“价格”,“最后购买发票”是什么意思?什么专栏标识产品? –
在版本12c之前的版本中,相关的子查询只能引用父级查询的一列。 “codprod = b.codprod”跨越两个等级,因此是错误。 –
ROWNUM在子查询中不以这种方式工作。它适用于整个查询。您需要在外部查询中使用ROW_NUMBER()OVER(PARTITION BY c.valorultent ORDER BY c.dtultent DESC)AS row_no和WHERE row_no = 1。 – Doug