语句一:
        --取分段起始时间
        SELECT TJRQ
        INTO   START_DATE
        FROM   (SELECT TT1.TJRQ, ROWNUM ROWNO
                FROM   (
                        
                        SELECT T.TJRQ TJRQ
                        FROM   WORK_INFO_MAIN M, WORK_INFO_CHILD T, DJ_NSRXX D
                        WHERE  M.SERIAL_NO = T.SERIAL_NO
                               AND T.NSRSBH = D.NSRSBH
                               AND T.YXZT_DM = '3'
                               AND (T.LSSJ = 0 OR T.LSSJ IS NULL)
                               AND D.CGS_FLAG = 1
                               AND M.CZRY_DM = C_USER.USER_ID
                        ORDER  BY TJRQ
                        
                        ) TT1)
        WHERE  ROWNO = START_NUM;语句二:
        ---取分段结束时间
        SELECT TJRQ
        INTO   END_DATE
        FROM   (SELECT TT1.TJRQ, ROWNUM ROWNO
                FROM   (
                        
                        SELECT T.TJRQ TJRQ
                        FROM   WORK_INFO_MAIN M, WORK_INFO_CHILD T, DJ_NSRXX D
                        WHERE  M.SERIAL_NO = T.SERIAL_NO
                               AND T.NSRSBH = D.NSRSBH
                               AND T.YXZT_DM = '3'
                               AND (T.LSSJ = 0 OR T.LSSJ IS NULL)
                               AND D.CGS_FLAG = 1
                               AND M.CZRY_DM = C_USER.USER_ID
                        ORDER  BY TJRQ
                        
                        ) TT1)
        WHERE  ROWNO = END_NUM;

解决方案 »

  1.   

    重复了?
    SELECT MIN(NSRSBH), MAX(NSRSBH)
      INTO START_WSPZH, END_WSPZH
      FROM (SELECT NSRSBH
              FROM (SELECT TT1.NSRSBH, ROWNUM ROWNO
                      FROM (SELECT T.NSRSBH
                              FROM WORK_INFO_MAIN M, WORK_INFO_CHILD T, DJ_NSRXX D
                             WHERE M.SERIAL_NO = T.SERIAL_NO AND
                                   T.NSRSBH = D.NSRSBH AND
                                   T.YXZT_DM = '3' AND
                                   (T.LSSJ = 0 OR T.LSSJ IS NULL) AND
                                   D.CGS_FLAG = 1 AND
                                   M.CZRY_DM = C_USER.USER_ID
                             ORDER BY TJRQ
                            ) TT1)
             WHERE ROWNO BETWEEN START_NUM AND END_NUM);
      

  2.   

    不一样
    上面的是
      WHERE  ROWNO = START_NUM; 下面的条件是
      WHERE  ROWNO = END_NUM;
      

  3.   

    SELECT TJRQ 
            INTO  START_DATE 
            FROM  (SELECT TT1.TJRQ, ROWNUM ROWNO 
                    FROM  ( 
                            
                            SELECT T.TJRQ TJRQ 
                            FROM  WORK_INFO_MAIN M, WORK_INFO_CHILD T, DJ_NSRXX D 
                            WHERE  M.SERIAL_NO = T.SERIAL_NO 
                                  AND T.NSRSBH = D.NSRSBH 
                                  AND T.YXZT_DM = '3' 
                                  AND (T.LSSJ = 0 OR T.LSSJ IS NULL) 
                                  AND D.CGS_FLAG = 1 
                                  AND M.CZRY_DM = C_USER.USER_ID 
                            ORDER  BY TJRQ 
                            
                            ) TT1) 
            WHERE  ROWNO = START_NUM or ROWNO = END_NUM 
      

  4.   

    START_NUM 与 END_NUM是什么关系?
      

  5.   

    WITH NEW_WORK AS
     (SELECT TT1.TJRQ, ROWNUM ROWNO
        FROM (SELECT T.TJRQ TJRQ
                FROM WORK_INFO_MAIN M, WORK_INFO_CHILD T, DJ_NSRXX D
               WHERE M.SERIAL_NO = T.SERIAL_NO AND
                     T.NSRSBH = D.NSRSBH AND
                     T.YXZT_DM = '3' AND
                     (T.LSSJ = 0 OR T.LSSJ IS NULL) AND
                     D.CGS_FLAG = 1 AND
                     M.CZRY_DM = C_USER.USER_ID
               ORDER BY TJRQ) TT1)
    SELECT a.TJRQ, b.TJRQ
      INTO START_DATE, END_DATE
      FROM NEW_WORK a, NEW_WORK b
     WHERE a.ROWNO = START_NUM AND
           b.ROWNO = END_NUM)