SELECT SUM(字段)
    FROM   read t, READ d
    AND    d.Read_Meter        = Number
    AND    d.Read_DP_Type_Code = 'D'
    AND    nvl(d.Process_Flag, 'N') = 'Y'
    AND    d.Read_Meter     = t.Read_Meter
    AND    d.Read_Date      = t.Read_Date
    AND    d.Read_Time      = t.Read_Time
    AND    nvl(t.Process_Flag, 'N') = 'Y'
    AND    t.Read_DP_Type_Code = 'T'
    AND    t.Read_Amount    > 0
    AND    t.process_date  = inProcDate
    AND    d.process_date  = inProcDate;  我想问下这个自联结是啥? 如上面的。
 d.Read_DP_Type_Code = 'D'  AND  t.Read_DP_Type_Code = 'T' 一个字段怎么可能同时为'D'又为'T' ???
 

解决方案 »

  1.   

    FROM  read t, READ d 
    相当于2个表,表T里的Read_DP_Type_Code 和表D里的Read_DP_Type_Code
    可以看作是2个表都有Read_DP_Type_Code这个字段 
      

  2.   

    自连接(self join)是SQL语句中经常要用的连接方式,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够得到一些特殊的数据。d.Read_DP_Type_Code = 'D'  AND  t.Read_DP_Type_Code = 'T' 你完全可以把d和t看成2张表。http://hi.baidu.com/magickerr/blog/item/e9c640f07f2ecbaaa50f5263.html
      

  3.   

    你就看称不同的表就行~ 说是自连接 ,其实在Oracle内存中是两个一样的表 这两个一样的表进行关联
      

  4.   

    感谢大家  我一问问题 ORACLE版块  总有你们出现阿