以下是查询:
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列。但我不知道如何解决这个问题?我不知道列的前缀是什么以及在哪里。我是这方面的新用户。
答案 0 :(得分:2)
当您需要区分具有相同名称的两列时,您可以为其所属的表提供前缀:
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不知道您的意思。完整的错误消息可能会告诉您列名称以及您使用它的确切位置。添加适当的表/别名前缀,您就完成了。