select * from (SELECT DISTINCT a.WJBM,a.SWDJDM,a.JC_NSR,b.rq_sb FROM zzds.DJ_NSR_JBXX a,zzds.SB_DZQCLS b,zzds.DM_DLWZ_QX c,zzds.DM_DLWZ_JD d  where a.WJBM = b.WJBM AND a.DM_ZCD_QX = c.DM_DLWZ_QX(+) AND a.DM_ZCD_JD = d.DM_DLWZ_JD(+) AND (b.RQ_SB IS NULL or SUBSTR(b.rq_sb,1,7)='2004-03') ) a
 where rownum<200

解决方案 »

  1.   

    rownum<200的意思不是显示你满足你查询条件的前199条记录,而是先选出表里的前199条记录,然后在这199条记录中选择符合你的where条件的记录
      

  2.   

    你数据库里有重复记录
    在有rownum条件的时候一般最后才执行
      

  3.   

    select * from (SELECT DISTINCT a.WJBM,a.SWDJDM,a.JC_NSR,b.rq_sb FROM zzds.DJ_NSR_JBXX a,zzds.SB_DZQCLS b,zzds.DM_DLWZ_QX c,zzds.DM_DLWZ_JD d  where a.WJBM = b.WJBM AND a.DM_ZCD_QX = c.DM_DLWZ_QX(+) AND a.DM_ZCD_JD = d.DM_DLWZ_JD(+) AND (b.RQ_SB IS NULL or SUBSTR(b.rq_sb,1,7)='2004-03') ) a
     where rownum<200