我正在尝试从子选择的另一个表中选择最新的价格。但我不知道如何让它工作。) Y8 K& P* `+ L9 k1 _% A
这是我试过的: ; @' A& j# t" u5 T; _6 O6 w6 ?2 hselect something,somthingelse, ( select * from ( select QUOTE_PRICE as old_price from price_history where price_history.part_no= article_table.part_no order by valid_from desc ) where rownum=1 )from article_table where rownum 子选本身可以工作,但找不到article_table.part_no: ' P5 Z/ E7 d! s* ]SQL错误:ORA-00904:“ article_table”。“ part_no:无效标识符4 q. `' r# C& N! P$ k' L4 M 更新:# P: V; J* A, l
当前解决方案: ( D' j9 S6 J1 D$ z1 g$ H% X7 Lselect something,somethingelse,( SELECT MIN(QUOTE_PRICE) KEEP (DENSE_RANK FIRST ORDER BY valid_from) FROM price_history WHERE part_no=article_table.part_no) as old_pricefrom article_table a where rownum 在Oracle在中间,子查询只能看到一级父级查询中的值。因为你有两个嵌套选择,一个内部看不到一个外部。 & x5 |% y/ z, U您可以先执行连接: 4 y3 }, J7 s' s: b! L7 uSELECT something,somthingelse,old_price FROM (SELECT a.something,a.somthingelse,p.quote_price old_price, row_number() over (PARTITION BY a.part_no ORDER BY valid_from DESC) rnk FROM article_table a LEFT JOIN price_history p ON a.part_no = p.part_no) WHERE rnk = 1;你也可以用一个PL / 0 u3 @0 A; U! ?9 SSQL在函数返回之前quote_price从price_history时提供的article_table.part_no。