【发布时间】:2021-06-10 17:28:54
【问题描述】:
如果表中存在记录,我需要从链接到该人的最高地址记录中获取数据。
示例: John Doe 根本没有地址。报告仍需要带上 John Doe 的姓名,但没有任何地址。 John Doe 有 3 个地址,地址编号在增加。报告需要带上 John Doe 的姓名,并且只带上地址编号最高的地址。
我试过的代码:
Select *
from person p left join address a on p.id = a.person and a.addressnumber = (select max(a2.addressnumber) from address a2 where a2.a_peron = p.id)
Oracle 返回错误:ORA-01799:列不能外连接到 子查询 01799. 00000 - “列不能外连接到子查询”
我也试过
Select *
from person p left join address a1 on p.id = a1.person
inner join (select a.person, max(a.addressnumber) MaxAdd, a.postcode, a.country from address a group by a.person, a.postcode, a.country) main on main.person = p.id and main.MaxAdd = a1.addressnumber
由于分组,这也不起作用。
我可能可以通过在 select 本身中使用子查询以及 case 语句来完成此操作,但我想避免这种情况,因为我将从地址中提取大量数据,因此这意味着每个 case 语句都带有子查询单列。
Oracle 11g - 11.2
有什么想法吗? :D
【问题讨论】: