【发布时间】:2014-06-25 14:50:25
【问题描述】:
更新:我将 LEFT JOIN 切换为 FULL JOIN 并且它可以工作。 但是,我对 SQL 编码太陌生了,不知道为什么……所以如果有人知道,请告诉我。谢谢!
(我使用的是 Oracle SQL Developer 版本 4.0.2.15)
我不知道我做错了什么,但我不能让这个左连接起作用。如果我使用“加入”,那么它可以工作。如果我输入“左连接”,我会收到以下错误消息:
ORA-00918:列定义不明确
00918. 00000 - “列定义不明确”
*原因:
*行动:
错误发生在第一个左连接附近
Select fa.ABC
From AdminDisplay.AppointmentInfo fa
Left Join (
select info.feFpk as infoFpk
,listagg(info.institution,'/ ') within group (order by rowid) as institution
,listagg(info.fieldofstudy,'/ ') within group (order by rowid) as Undegradmajor
,listagg(info.degreedesc,'/ ') within group (order by rowid) as Undergraddegree
from (select fe.ABC feFpk
,fe.institution
,fe.fieldofstudy
,ld.degreedesc
from MasterDisplay.faceducation fe
join MasterDisplay.lkupdegree ld on ld.degreepk=fe.degreepk
where fe.educationtypepk in ('XXX')) info
group by info.feFpk
) UG on UG.infoFpk=fa.ABC
;
【问题讨论】:
-
我猜一下,说你需要更具体的这个属性:rowid in
order by rowid -
对您和回答此问题的任何人都非常有帮助的一件事是通过删除对于重现错误而言并非必不可少的所有内容来减少您发布的 SQL。例如,重现错误是否需要注释掉的行?删除其中一个左连接怎么样?还是一些列?显示错误的最低限度是多少?
-
对不起...错误发生在第一个“左连接”中。如果我改用“加入”,则整个查询都可以工作......这不是我想要的结果。我编辑了这个问题。谢谢
-
这完全不相关,但是如果你使用“with”而不是内联子查询,它确实增加了查询的可读性。我确实很奇怪将内部联接更改为左联接会导致此编译错误。这不计算。