gpt4 book ai didi

sql - oracle中的子选择

转载 作者:行者123 更新时间:2023-12-04 17:40:12 25 4
gpt4 key购买 nike

我正在尝试从子选择中的另一个表中选择最新价格。但我不知道如何让它工作。

这是我尝试过的:

select 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 < 5

子选择自己工作,但找不到 article_table.part_no :

SQL Error: ORA-00904: "article_table "."part_no": invalid identifier



更新:

当前解决方案:
select 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_price
from article_table a where rownum < 5

最佳答案

在 Oracle 中,子查询只能查看一级深度的父查询的值。由于您有两个嵌套选择,因此内部选择无法看到外部选择的值。

您可以先执行连接:

SELECT 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/SQL 函数来返回第一个 quote_price来自 price_history当给出 article_table.part_no .

关于sql - oracle中的子选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5740813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com