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

请高手指点下SQL(3)


select   e.PACK_NAME,
              d.up_region_no,
              count(distinct   a1.split_id)   as   一到四月,
              count(distinct   a2.split_id)   as   五月
    from   (select   *
                    from   v_tcm_user_prod
                  where   bureau_no   =   '0013701 '
                      and   oper_date   >   =
                              to_date( '2006-12-12   00:00:00 ',   'yyyy-mm-dd   hh24:mi:ss ')
                      and   oper_date   <   =
                              to_date( '2007-04-30   23:59:59 ',   'yyyy-mm-dd   hh24:mi:ss '))   a1,
              (select   *
                    from   v_tcm_user_prod
                  where   bureau_no   =   '0013701 '
                      and   oper_date   >   =
                              to_date( '2007-05-01   00:00:00 ',   'yyyy-mm-dd   hh24:mi:ss ')
                      and   oper_date   <   =
                              to_date( '2007-05-31   23:59:59 ',   'yyyy-mm-dd   hh24:mi:ss '))   a2,
              v_tcm_user   b,
              qh_twm_region   d,
              v_tpm_pack   e
  where   e.PACK_ID   in           (‘1’,‘2’,‘3’)
      and   a2.PACK_ID   =   e.PACK_ID
      and   a1.PACK_ID   =   e.PACK_ID
      and   A1.USER_ID   =   B.USER_ID
      and   A2.USER_ID   =   B.USER_ID
      and   B.REGION_NO   =   D.REGION_NO
      and   b.STATE   =   '1 '
      and   b.USER_seq   =   '0 '
      and   b.finish_flag   =   '1 '
      and   a1.state   =   '1 '
      and   a1.finish_flag   =   '1 '
      and   a2.state   =   '1 '
      and   a2.finish_flag   =   '1 '
  group   by   e.PACK_NAME,   d.up_region_no

此SQL的问题是   a1,a2   对应的相同的表v_tcm_user   b,   a1,a2时间区间不同是取不出来数据的,如果a