gpt4 book ai didi

sql - Oracle - 相关子查询问题

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

我有这个问题:

select acc_num
from (select distinct ac_outer.acc_num, ac_outer.owner
from ac_tab ac_outer
where (ac_outer.owner = '1234567')
and ac_outer.owner = (select sq.owner
from (select a1.owner
from ac_tab a1
where a1.acc_num = ac_outer.acc_num /*This is the line that gives me problems.*/
order by a1.a_date desc, a1.b_date desc, a1.c_date desc) sq
where rownum = 1)
order by dbms_random.value()) subq
order by acc_num;

想法是从 ac_tab 获取所有 acc_num(不是主键),它们的 owner1234567

由于 ac_tab 中的 acc_num 可能随着时间的推移更改了 owner,因此我尝试使用内部相关子查询来确保acc_num 只有当它是最近 owner12345678 时才会返回。自然,它不起作用(或者我不会在这里发帖 ;))

Oracle 给我一个错误:ORA-000904 ac_outer.acc_num is an invalid identifier

我认为 ac_outer 应该对相关子查询可见,但由于某些原因它不是。有没有办法修复查询,还是我必须求助于 PL/SQL 来解决这个问题?

(Oracle版本为10g)

最佳答案

我不确定为什么 Peter 使用 Min(owner) 分析函数而不是 first_value(owner)。我相信后者会为您提供所需的东西,而 min(owner) 会为您提供“最小”所有者。我同意查询中的其他所有内容:

Select Distinct acc_num
From (
Select
acc_num,
owner,
first_value(owner) Over ( Partition By acc_num
Order By a_date Desc, b_date Desc, c_date Desc
) recent_owner
From ac_tab
)
Where owner = '1234567'
And owner = recent_owner
Order By acc_num;

关于sql - Oracle - 相关子查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2466148/

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