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非常陌生,所以我不确定自己是否完全了解。非常感谢。这真的让我明白了。