获取ORA-00918:10g上的列模糊定义错误,但工作在11g

时间:2018-03-26 12:08:24

标签: oracle oracle11g oracle10g

select distinct p.id, 
    format_name(p.fname, p.lname,'local000000000000001') full_name, 
    p.username, 
    p.person_no, 
    jobinfo.name, 
    company.name2, 
    company.name, 
    dom.name, 
    per_mgr.username, 
    a.name 
from cmt_person p 
    inner join fgt_locale loc on loc.id='local000000000000001' 
    left outer join tpt_company company on p.company_id = company.id 
    left outer join tpt_ext_job_type jobinfo on p.jobtype_id = jobinfo.id AND jobinfo.locale_id=loc.id 
    inner join fgt_domain dom on p.split = dom.id 
    left outer join fgt_gen gen on gen.id1 = p.id and gen.TYPE = 301 and gen.str2 IS NULL 
    left outer join fgt_ext_admin_managed_lov a on a.id = gen.id2 and a.locale_id = loc.id 
    left outer join cmt_person per_mgr on per_mgr.id = p.manager_id 
    inner join fgt_address a on a.owner_id = p.id  
where   (   p.terminated_on is null or p.terminated_on >= sysdate) 
    and(   (p.type = 100 and p.split in ('domin000000000000007','domin000000000001107','domin000000000001108','domin000000000001109','domin000000000001104','domin000000000001103','domin000000000001106','domin000000000001105','domin000000000000001','domin000000000001102','domin000000000001110')) 
    or   (p.type = 200 and p.split in ('domin000000000000007','domin000000000001107','domin000000000001108','domin000000000001109','domin000000000001104','domin000000000001103','domin000000000001106','domin000000000001105','domin000000000000001','domin000000000001102','domin000000000001110'))   ) 
    AND  1=1   
    AND lower(p.status) = lower('A')   
    AND lower(a.country) like lower('USA' || '%')   
    AND p.type in (decode('1','1',100,'2',200,'0',p.type))   
    AND p.manager_id in ('emplo000000000034578')  
ORDER BY 2,3,4,5,6,7,8,9,10

这是我为所有表定义表别名的查询

对于10g的后续列,我是否需要列别名?

jobinfo.name , 
company.name2 , 
company.name , 
dom.name

2 个答案:

答案 0 :(得分:1)

两个表共享相同的别名(" a"):fgt_ext_admin_managed_lovfgt_address。改变它,因为它不会起作用:

SQL> select a.deptno
  2  from dept a, emp a;
select a.deptno
       *
ERROR at line 1:
ORA-00918: column ambiguously defined


SQL>

答案 1 :(得分:0)

请看下面的代码: -

long_or

您为两个表使用了相同的别名。将其更改为任何其他别名。