select Distinct b.*,a.*,c.OwnerName as  cOwnerName,c.OwnerNum as cOwnerNum from sys_view_t b inner join R_Mort a 
on b.num=a.regnum 
   inner join R_buil d on(INSTR(a.builid,';'||d.builid||';',1,1)>0)  left 
   join R_owner c on (INSTR(';'||c.builid,';'||d.builid||';',1,1)>0) where num='201008000563'--不能执行[一直处于'雷电'状态]
-------------------------------------------select Distinct b.*,a.*,c.*  from sys_view_t b inner join R_Mort a 
on b.num=a.regnum 
   inner join R_buil d on(INSTR(a.builid,';'||d.builid||';',1,1)>0)  left 
   join R_owner c on (INSTR(';'||c.builid,';'||d.builid||';',1,1)>0) where num='201008000563'--可以执行
为什么呢?  用了 as 就不行了?

解决方案 »

  1.   

    将b.*,a.*,换成字段名。。oracle中查询时*不能与实际字段名并存,要么全是表名.*,要么是字段名。
      

  2.   

    写出a表,b表的所有需要查询的字段,再用as。
    select Distinct a.字段1 ,a.字段2 ,a.字段3 ,.... ,b.字段1 ,b.字段2 ,b.字段3 , c.OwnerName as  cOwnerName,c.OwnerNum as cOwnerNum from sys_view_t b inner join R_Mort a 
    on b.num=a.regnum 
       inner join R_buil d on(INSTR(a.builid,';'||d.builid||';',1,1)>0)  left 
       join R_owner c on (INSTR(';'||c.builid,';'||d.builid||';',1,1)>0) where num='201008000563'
    OK?
      

  3.   

    忘了说下,加个条件就能查询出来了!~
    select Distinct b.*,a.*,c.OwnerName as  cOwnerName,c.OwnerNum as cOwnerNum from sys_view_t b inner join R_Mort a 
    on b.num=a.regnum 
       inner join R_buil d on(INSTR(a.builid,';'||d.builid||';',1,1)>0)  left 
       join R_owner c on (INSTR(';'||c.builid,';'||d.builid||';',1,1)>0) where num='201008000563' and  qznum='0000123'
      

  4.   

    算了 揭帖; 估计就是 他们动 oracle的文件的原因;以前都很正常的;
    现在虽然打了9204的补丁;但还是有些乖乖的地方.