日期:2014-05-17  浏览次数:20684 次

oracle distinct 字段的问题求解
Code1:
SQL code
SELECT a.mps_id, b.MONTH
  FROM (SELECT   mps_id
            FROM smicscmadm.scm_mps_mast
           WHERE del_flag = 'N' AND TYPE = 'MPS' AND ROWNUM <= 6
        ORDER BY mps_id DESC) a,
       (SELECT mps_id, YEAR || MONTH AS MONTH
          FROM scm_mps_qty) b
 WHERE a.mps_id = b.mps_id


Code2:
SQL code
SELECT DISTINCT a.mps_id, b.MONTH
           FROM (SELECT   mps_id
                     FROM smicscmadm.scm_mps_mast
                    WHERE del_flag = 'N' AND TYPE = 'MPS' AND ROWNUM <= 6
                 ORDER BY mps_id DESC) a,
                (SELECT mps_id, YEAR || MONTH AS MONTH
                   FROM scm_mps_qty) b
          WHERE a.mps_id = b.mps_id


Code1 在结束后有返回结果,但是Code2在执行结束后没有返回结果,

Code2相对于Code1的唯一区别是加了distinct 关键字. db是Oracle 11g

希望大家帮忙看看是哪里写错了.

------解决方案--------------------
SQL code

SELECT A.MPS_ID, B.MONTH
  FROM (SELECT MPS_ID
          FROM (SELECT MPS_ID
                  FROM SMICSCMADM.SCM_MPS_MAST
                 WHERE DEL_FLAG = 'N'
                   AND TYPE = 'MPS'
                 ORDER BY MPS_ID DESC)
         WHERE ROWNUM <= 6) A,
       (SELECT MPS_ID, YEAR || MONTH AS MONTH FROM SCM_MPS_QTY) B
 WHERE A.MPS_ID = B.MPS_ID;