Sql 左联接ORA-00918:列定义不明确错误
更新:我将左连接切换为完全连接,它可以工作。 然而,我对SQL编码太陌生了,不知道为什么……所以如果有人知道,请告诉我。谢谢大家! 我使用的是Oracle SQL Developer版本4.0.2.15 我不知道我做错了什么,但我不能让这个左连接工作。如果我使用Join,它就会工作。如果我放置左连接,则会收到以下错误消息: ORA-00918:定义不明确的列 91800000-定义不明确的列 *原因: *行动: 错误发生在第一个左连接附近Sql 左联接ORA-00918:列定义不明确错误,sql,oracle,join,Sql,Oracle,Join,更新:我将左连接切换为完全连接,它可以工作。 然而,我对SQL编码太陌生了,不知道为什么……所以如果有人知道,请告诉我。谢谢大家! 我使用的是Oracle SQL Developer版本4.0.2.15 我不知道我做错了什么,但我不能让这个左连接工作。如果我使用Join,它就会工作。如果我放置左连接,则会收到以下错误消息: ORA-00918:定义不明确的列 91800000-定义不明确的列 *原因: *行动: 错误发生在第一个左连接附近 Select fa.ABC From
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
;
不太清楚为什么从内部联接切换到外部联接会引发错误,因为它来自UG内嵌视图。看起来可能是语法错误 您可以通过指定info in-line视图中的两个表中的哪一个提供rowid来避免外部联接错误,正如@Amir sort建议的那样:
Left Join (
select info.feFpk as infoFpk
,listagg(info.institution,'/ ') within group (order by fe_rowid) as institution
,listagg(info.fieldofstudy,'/ ') within group (order by fe_rowid) as Undegradmajor
,listagg(info.degreedesc,'/ ') within group (order by fe_rowid) as Undergraddegree
from (select fe.rowid fe_rowid
,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
因此,在内嵌视图中,我在选择列表中添加了fe.rowid fe_rowid作为额外项;然后listagg调用使用别名fe_rowid而不是不明确的rowid
使用rowid排序任何内容都有点奇怪,因为它实际上并不表示数据的任何有用信息。如果你只是选择了它,因为你必须按某物排序,那么你可以按null排序,这也是不确定的;或者按feFpk排序,这可能会稍微有用一些,即使它是一个合成键。我猜一下,并说您需要在这个属性中更具体一些:按rowid排序按Rowide有一件事对您和回答此问题的任何人都非常有帮助,那就是通过删除所有不相关的内容来减少您发布的SQL对再现错误至关重要。例如,复制错误是否需要注释掉的行?移除一个左连接怎么样?还是一些专栏?显示错误的最小值是多少?对不起…错误发生在第一个左连接中。如果我改为使用Join,整个查询都会工作…这不是我想要的结果。我编辑了问题。感谢这是完全不相关的,但是如果您使用with而不是内联子查询,它确实会增加查询的可读性。我确实觉得很奇怪,将内部连接更改为左连接会导致此编译错误。这不算数,它有用!谢谢你的详细解释。我还试着通过fefPK订购: