Oracle ORA-00918:列定义不明确..如何解决此错误?
以下是查询:Oracle ORA-00918:列定义不明确..如何解决此错误?,oracle,Oracle,以下是查询: select t1_c1, case when max(t1_c2) = 'X' then max(t2_c3) else 'X ' || max(t2_c3) end as t2_c3 from t1 a1, t2 where t1_c4 = ( select max(a2.t1_
select
t1_c1,
case
when max(t1_c2) = 'X'
then max(t2_c3)
else 'X ' || max(t2_c3)
end as t2_c3
from
t1 a1,
t2
where t1_c4 =
(
select max(a2.t1_c4)
from t1 a2
where a1.t1_c1 = a2.t1_c1
and a2.t1_c4 <= '31-AUG-'||&ws_acad_yr
)
and t1_c2 = t2_c8(+)
group by t1_c1
)
where c1 = t3_c1
and t3_c5 is null
and c1 = t4_c1
and t4_c6 = t5_c8(+)
and t4_c5 = t6_c8(+)
and c1 = t7_c1(+)
and c1 = t8_c1(+)
and c1 = t1_c1(+)
我正在使用来自两个或多个表的pidm列。但我不确定如何解决这个问题?我不知道如何以及在哪里为该列添加前缀。我是这方面的新用户。当需要区分两个同名列时,可以为其所属的表提供前缀:
SELECT line.total, invoice.total
FROM invoice
INNER JOIN line ON invoice.invoice_id=line.invoice_id
但这并不总是可能/可取的:
如果列来自子查询,则不可能
如果你把同一张表读两遍是没有用的
如果表名太长,则不实用
为了解决这个问题,SQL允许定义别名。你已经在使用它们了
from t1 a1
^ ^
| \ Alias
\ Table
ORA-00918:定义模糊的列意味着您有一个属于多个列的列名,而Oracle不知道您指的是哪一个。完整的错误消息可能会告诉您列名和使用它的确切位置。添加适当的表/别名前缀,即可完成。使用别名。从表1 t1,表2 t2中选择t1.col1,t2.col1…有人能帮我解决这个问题吗?tbone的提示有什么问题?如果你需要澄清,就去问他们,不要忽视他的建议。我无法理解他使用别名的意思。你能解释一下它的确切含义吗?很抱歉给您添麻烦,但我对编码和使用oracle或sql非常陌生,所以我不确定自己是否完全了解。非常感谢。这真的让我明白了。