SELECT E.USER_NO,CASE WHEN EXISTS (SELECT /*+parallel(b,10)*/ 1 FROM ODS.ODS_R_RENT_INFO_MON B WHERE b.user_id=e.user_no) THEN '1'ELSE '0'END is_heyue
  FROM (SELECT /*+parallel(t,10)*/
         T.USER_NO,
         SUM(T.STAND_FEE_2 + T.LONG_FEE_2 + T.SPECIAL_FEE_2 + T.OTHER_FEE_2)
          FROM ODS.ODS_O_OWE_GSM_MON T
         WHERE (T.STAND_FEE_2 + T.LONG_FEE_2 + T.SPECIAL_FEE_2 +
               T.OTHER_FEE_2) > 0
           AND T.ACCT_MONTH = '201012'
           AND 此处想选取min(T.OWE_MONTH)='201012'的数据 
           AND T.TELE_TYPE = '1'
         GROUP BY T.USER_NO) T,
       (SELECT /*+parallel(e,10)*/
         E.USER_NO, E.TELE_TYPE
          FROM EDW.DW_M_DEV_USER_MON E
         WHERE E.ACCT_MONTH = '201012') E
 WHERE T.USER_NO = E.USER_NO(+)
   AND E.TELE_TYPE = '1200'不知道大家能理解么,在线等

解决方案 »

  1.   

    此处想选取min(T.OWE_MONTH)='201012'的数据
     
    not exists(select 1 from  ODS.ODS_O_OWE_GSM_MON t2
               where t.主键=t2.主键 and t.OWE_MONTH>t2.OWE_MONTH)
      

  2.   

    那就再加个条件咯 OWE_MONTH=201012 试试
      

  3.   


    CREATE  TABLE temp_owe_3g_20110406 AS
    SELECT E.USER_NO,CASE WHEN EXISTS (SELECT /*+parallel(b,10)*/ 1 FROM ODS.ODS_R_RENT_INFO_MON B WHERE b.user_id=e.user_no) THEN '1'ELSE '0'END is_heyue
      FROM (SELECT /*+parallel(t,10)*/
             T.USER_NO,
             SUM(T.STAND_FEE_2 + T.LONG_FEE_2 + T.SPECIAL_FEE_2 + T.OTHER_FEE_2)
              FROM ODS.ODS_O_OWE_GSM_MON T
             WHERE (T.STAND_FEE_2 + T.LONG_FEE_2 + T.SPECIAL_FEE_2 +
                   T.OTHER_FEE_2) > 0
               AND T.ACCT_MONTH = '201012'
               AND T.OWE_MONTH ='201012'
               AND T.TELE_TYPE = '1'
             GROUP BY T.USER_NO) T,
           (SELECT /*+parallel(e,10)*/
             E.USER_NO, E.TELE_TYPE
              FROM EDW.DW_M_DEV_USER_MON E
             WHERE E.ACCT_MONTH = '201012') E
     WHERE T.USER_NO = E.USER_NO(+)
       AND E.TELE_TYPE = '1200'
       
                   
                   
    CREATE TABLE TEMP_OWE_3G_20110412 AS    
    SELECT /*+parallel(t,10)*/
     T.USER_NO, T.IS_HEYUE
      FROM TEMP_OWE_3G_20110406 T
     WHERE NOT EXISTS (SELECT /*+parallel(t1,10)*/
             1
              FROM ODS.ODS_O_OWE_GSM_MON T1
             WHERE T1.USER_NO = T.USER_NO
               AND (T1.STAND_FEE_2 + T1.LONG_FEE_2 + T1.SPECIAL_FEE_2 +
                   T1.OTHER_FEE_2) > 0
               AND T1.ACCT_MONTH = '201012'
               AND T1.OWE_MONTH < '201012'
               AND T1.TELE_TYPE = '1')
    看看我这么写对么