一条分两条

来源:互联网 发布:imovie是什么软件 编辑:程序博客网 时间:2024/06/11 12:13

--一条拆成两条
--统计当前客户经理和客户关系,上年底客户经理和客户关系
--如果客户经理和客户关系跨越这两个时间段,那么一条分成两条
WITH
    basic_t AS (
          --客户和客户经理关系表
          SELECT 123 CUST_NO,'A' AM_NO, '20091231' start_dt , '29991231' end_dt FROM DUAL
          UNION ALL
          SELECT 456,'B', '20100401' start_dt , '29991231' end_dt  FROM DUAL
          UNION ALL
          SELECT 789,'C', '20100505' start_dt , '20110101' end_dt  FROM DUAL
    )
   
,   rela_peroid AS (
            --在统计日期和上年底的关系
            SELECT   t.cust_no
                   , t.am_no
                   , CASE WHEN      t.start_dt <= '20110425'
                               AND t.end_dt > '20110425'
                               AND t.start_dt <= SUBSTR('20110425',1,4)-1 || '1231'
                               AND t.end_dt > SUBSTR('20110425',1,4) -1 || '1231'
                               THEN 'ALL'
                          WHEN      t.start_dt <= '20110425'
                               AND  t.end_dt > '20110425'
                               THEN '20110425'
                          WHEN      t.start_dt <= SUBSTR('20110425',1,4)-1 || '1231'
                               AND t.end_dt > SUBSTR('20110425',1,4)-1 || '1231'
                               THEN SUBSTR('20110425',1,4)-1 ||'1231'
                    END stat_dt
            FROM basic_t t
            WHERE(
                       t.start_dt <= '20110425'  --当前
                   AND t.end_dt > '20110425'
                 )  
            OR  (
                       t.start_dt <= SUBSTR('20110425',1,4)-1 || '1231' --上年底
                   AND t.end_dt > SUBSTR('20110425',1,4)-1 || '1231'
                ) 
    )

--SELECT * FROM rela_peroid;
 
, one2two AS (
        SELECT 'ALL' stat_dt,decode(rownum,1,'20110425',substr('20110425',1,4) -1 || '1231') rp_dt
        from dual connect by rownum < 3;
)

SELECT   t.cust_no
       , t.am_no
       , DECODE(one2two.rp_dt,NULL,t.stat_dt,one2two.rp_dt) AS stat_dt
FROM rela_peroid t
left JOIN one2two
ON t.stat_dt = one2two.stat_dt
ORDER BY cust_no

原创粉丝点击