본문 바로가기

작업일지

고객수 현황(EIS개발)

--DEFINE BASE_DT = '20090403'

--FetClntCnt00
--고객수 현황
SELECT /*+ RULE */ /*+MG$FetClntCnt00 작성자 영업지원_황해훈*/
       VVV1.SEQ                             /*!type long   */ /*!시퀀스     */ SEQ,
       NVL(VVV2.CNT,0)                      /*!type long   */ /*!목표수     */ CNT1,
       NVL(VVV1.CNT1,0)                     /*!type long   */ /*!당일고객수 */ CNT2,
       NVL(VVV1.CNT1 - VVV1.CNT2,0)         /*!type long   */ /*!전일고객수 */ CNT3,
       NVL(VVV1.CNT1 - VVV1.CNT3,0)         /*!type long   */ /*!전월고객수 */ CNT4,
       NVL(VVV1.CNT1 - VVV1.CNT4,0)         /*!type long   */ /*!전년고객수 */ CNT5,
       NVL(VVV1.CNT1 / VVV2.CNT * 100,0)    /*!type double */ /*!진척도   */ ACHV_RAT
FROM (
 SELECT
        1 SEQ,
        SUM(DECODE(VV1.DPSAST_AMT1,0,0,1)) CNT1,
        SUM(DECODE(VV1.DPSAST_AMT2,0,0,1)) CNT2,
        SUM(DECODE(VV1.DPSAST_AMT3,0,0,1)) CNT3,
        SUM(DECODE(VV1.DPSAST_AMT4,0,0,1)) CNT4
 FROM (
  SELECT
         DISTINCT A.CLNT_NO,
         SUM(CASE WHEN V1.BASE_DT = /*!type char(8)*/ /*!기준일 */:BASE_DT
                  THEN DPSAST_AMT
                  ELSE 0
                  END)DPSAST_AMT1,
         SUM(CASE WHEN V1.BASE_DT = TO_CHAR(TO_DATE(:BASE_DT,'YYYYMMDD')-1,'YYYYMMDD')
                  THEN DPSAST_AMT
                  ELSE 0
                  END)DPSAST_AMT2,
         SUM(CASE WHEN V1.BASE_DT = TO_CHAR(LAST_DAY(ADD_MONTHS(TO_DATE(:BASE_DT,'YYYYMMDD'),-1)),'YYYYMMDD')
                  THEN DPSAST_AMT
                  ELSE 0
                  END)DPSAST_AMT3,
         SUM(CASE WHEN V1.BASE_DT = SUBSTR(TO_CHAR(ADD_MONTHS(TO_DATE(/*!type char(8)*/ /*!기준일 */:BASE_DT,'YYYYMMDD'),-12),'YYYYMMDD'),1,4)||'1231'
                  THEN DPSAST_AMT
                  ELSE 0
                  END)DPSAST_AMT4


  FROM (
   SELECT
        ACNT_NO             ACNT_NO
        ,BASE_DT            BASE_DT
        ,SUM(DPS + STK_EVAL_AMT - CRDT_MLOAN_AMT)        DPSAST_AMT         --주식(위탁)
   FROM
       SL_TBD_DT_CSGN_ACNT_DPSAST
   WHERE  BASE_DT     IN (
                      :BASE_DT, --당일
                      TO_CHAR(TO_DATE(:BASE_DT,'YYYYMMDD')-1,'YYYYMMDD'), --전일
                      TO_CHAR(LAST_DAY(ADD_MONTHS(TO_DATE(:BASE_DT,'YYYYMMDD'),-1)),'YYYYMMDD'), --전월
                      SUBSTR(TO_CHAR(ADD_MONTHS(TO_DATE(/*!type char(8)*/ /*!기준일 */:BASE_DT,'YYYYMMDD'),-12),'YYYYMMDD'),1,4)||'1231' --전년
                      )
   GROUP BY ACNT_NO,BASE_DT

      UNION ALL

   SELECT
        ACNT_NO
        ,BASE_DT
           ,SUM(STK_EVAL_AMT + DPS)                           --주식(저축)
      FROM
       SL_TBD_DT_SAV_ACNT_DPSAST
   WHERE  BASE_DT     IN (
                      :BASE_DT, --당일
                      TO_CHAR(TO_DATE(:BASE_DT,'YYYYMMDD')-1,'YYYYMMDD'), --전일
                      TO_CHAR(LAST_DAY(ADD_MONTHS(TO_DATE(:BASE_DT,'YYYYMMDD'),-1)),'YYYYMMDD'), --전월
                      SUBSTR(TO_CHAR(ADD_MONTHS(TO_DATE(/*!type char(8)*/ /*!기준일 */:BASE_DT,'YYYYMMDD'),-12),'YYYYMMDD'),1,4)||'1231' --전년
                      )
   GROUP BY ACNT_NO,BASE_DT

      UNION ALL

   SELECT
        ACNT_NO
        ,BASE_DT
        ,SUM(DPS + OPT_EVAL_AMT)
   FROM
       SL_TBD_DT_FNO_ACNT_DPSAST
   WHERE  BASE_DT   IN (
                      :BASE_DT, --당일
                      TO_CHAR(TO_DATE(:BASE_DT,'YYYYMMDD')-1,'YYYYMMDD'), --전일
                      TO_CHAR(LAST_DAY(ADD_MONTHS(TO_DATE(:BASE_DT,'YYYYMMDD'),-1)),'YYYYMMDD'), --전월
                      SUBSTR(TO_CHAR(ADD_MONTHS(TO_DATE(/*!type char(8)*/ /*!기준일 */:BASE_DT,'YYYYMMDD'),-12),'YYYYMMDD'),1,4)||'1231' --전년
                      )
   AND EMP_NO NOT IN ('999999999')
   GROUP BY ACNT_NO,BASE_DT

      UNION ALL

      SELECT
           C.ACNT_NO
           ,BASE_DT
        ,SUM(EVAL_AMT)
      FROM CM_TBM_CODE            A,
          CM_TBM_IVSTFND         B,
          SL_TBL_ACNT_IVTRST_BAL C
   WHERE A.CMN_CSLDT_CODE = B.INDRC_INVST_CODE
   AND   B.IVSTFND_CODE   = C.IVSTFND_CODE
   AND   C.BASE_DT    IN (
                      :BASE_DT, --당일
                      TO_CHAR(TO_DATE(:BASE_DT,'YYYYMMDD')-1,'YYYYMMDD'), --전일
                      TO_CHAR(LAST_DAY(ADD_MONTHS(TO_DATE(:BASE_DT,'YYYYMMDD'),-1)),'YYYYMMDD'), --전월
                      SUBSTR(TO_CHAR(ADD_MONTHS(TO_DATE(/*!type char(8)*/ /*!기준일 */:BASE_DT,'YYYYMMDD'),-12),'YYYYMMDD'),1,4)||'1231' --전년
                      )
   AND   A.CODE_RANGE     = '0802'
   AND   A.LANG_TP        = 'K'
   GROUP BY ACNT_NO,BASE_DT

      UNION ALL

   SELECT
        B.ACNT_NO
        ,B.BASE_DT
        ,SUM(DPS)
   FROM BM_TBM_DT_CF_ACNT B
   WHERE B.BASE_DT IN  (
                     :BASE_DT, --당일
                     TO_CHAR(TO_DATE(:BASE_DT,'YYYYMMDD')-1,'YYYYMMDD'), --전일
                     TO_CHAR(LAST_DAY(ADD_MONTHS(TO_DATE(:BASE_DT,'YYYYMMDD'),-1)),'YYYYMMDD'), --전월
                     SUBSTR(TO_CHAR(ADD_MONTHS(TO_DATE(/*!type char(8)*/ /*!기준일 */:BASE_DT,'YYYYMMDD'),-12),'YYYYMMDD'),1,4)||'1231' --전년
                     )
   AND PDPTN_CODE = '04'
   AND HIRNK_ACNT_PDPTN_CODE <> '00'
   GROUP BY B.ACNT_NO,B.BASE_DT
  )V1
  , BM_TBM_ACNT A
  , BM_TBM_CLNT B
  WHERE V1.ACNT_NO = A.ACNT_NO
  AND   A.CLNT_NO  = B.CLNT_NO
  AND   A.PDPTN_CODE <> '00'
  AND   V1.DPSAST_AMT >= 30000000
  GROUP BY A.CLNT_NO
 )VV1

 UNION ALL

    -- 총고객수
 SELECT
        2 SEQ,
        SUM(DECODE(V1.CNT1,NULL,0,1)) CNT1,
        SUM(DECODE(V1.CNT2,NULL,0,1)) CNT2,
        SUM(DECODE(V1.CNT3,NULL,0,1)) CNT3,
        SUM(DECODE(V1.CNT4,NULL,0,1)) CNT4
 FROM (
  SELECT
         DISTINCT
         CASE WHEN BASE_DT = :BASE_DT
              THEN CLNT_NO
              END CNT1,
         CASE WHEN BASE_DT = TO_CHAR(TO_DATE(:BASE_DT,'YYYYMMDD')-1,'YYYYMMDD')
              THEN CLNT_NO
              END CNT2,
         CASE WHEN BASE_DT = TO_CHAR(LAST_DAY(ADD_MONTHS(TO_DATE(:BASE_DT,'YYYYMMDD'),-1)),'YYYYMMDD')
              THEN CLNT_NO
              END CNT3,
         CASE WHEN BASE_DT = SUBSTR(TO_CHAR(ADD_MONTHS(TO_DATE(/*!type char(8)*/ /*!기준일 */:BASE_DT,'YYYYMMDD'),-12),'YYYYMMDD'),1,4)||'1231'
              THEN CLNT_NO
              END CNT4
  FROM
   BM_TBM_DT_CF_ACNT
  WHERE BASE_DT IN (
                    :BASE_DT, --당일
                    TO_CHAR(TO_DATE(:BASE_DT,'YYYYMMDD')-1,'YYYYMMDD'), --전일
                    TO_CHAR(LAST_DAY(ADD_MONTHS(TO_DATE(:BASE_DT,'YYYYMMDD'),-1)),'YYYYMMDD'), --전월
                    SUBSTR(TO_CHAR(ADD_MONTHS(TO_DATE(/*!type char(8)*/ /*!기준일 */:BASE_DT,'YYYYMMDD'),-12),'YYYYMMDD'),1,4)||'1231' --전년
                    )
  AND PDPTN_CODE  IN ('01', '02', '03', '04')
  AND ACNT_STAT_CODE  = '00'
  AND ACNT_NO  > '0'
  AND ACNT_NO_CLSS_PTN_CODE = '01'
     )V1

        UNION ALL

        SELECT
      3 SEQ,
      SUM(CASE WHEN BASE_DT = :BASE_DT
               THEN PRDAY_ACTV_ACNT_QTY
                 +NEW_ACNT_QTY
                 +MVIN_ACNT_QTY
                 +CSLDT_ABND_ACNT_QTY
                 +PRDAY_CSLDT_PRERG_ACNT_QTY
                 +CLOSE_ABND_ACNT_QTY
                 -CSLDT_ACNT_QTY
                 -MVOUT_ACNT_QTY
                 -CLOSE_ACNT_QTY
            ELSE 0
            END) CNT1,
      SUM(CASE WHEN BASE_DT = TO_CHAR(TO_DATE(:BASE_DT,'YYYYMMDD')-1,'YYYYMMDD')
               THEN PRDAY_ACTV_ACNT_QTY
                 +NEW_ACNT_QTY
                 +MVIN_ACNT_QTY
                 +CSLDT_ABND_ACNT_QTY
                 +PRDAY_CSLDT_PRERG_ACNT_QTY
                 +CLOSE_ABND_ACNT_QTY
                 -CSLDT_ACNT_QTY
                 -MVOUT_ACNT_QTY
                 -CLOSE_ACNT_QTY
            ELSE 0
            END) CNT2,
      SUM(CASE WHEN BASE_DT = TO_CHAR(LAST_DAY(ADD_MONTHS(TO_DATE(:BASE_DT,'YYYYMMDD'),-1)),'YYYYMMDD')
               THEN PRDAY_ACTV_ACNT_QTY
                 +NEW_ACNT_QTY
                 +MVIN_ACNT_QTY
                 +CSLDT_ABND_ACNT_QTY
                 +PRDAY_CSLDT_PRERG_ACNT_QTY
                 +CLOSE_ABND_ACNT_QTY
                 -CSLDT_ACNT_QTY
                 -MVOUT_ACNT_QTY
                 -CLOSE_ACNT_QTY
            ELSE 0
            END) CNT3,
      SUM(CASE WHEN BASE_DT = SUBSTR(TO_CHAR(ADD_MONTHS(TO_DATE(/*!type char(8)*/ /*!기준일 */:BASE_DT,'YYYYMMDD'),-12),'YYYYMMDD'),1,4)||'1231'
               THEN PRDAY_ACTV_ACNT_QTY
                 +NEW_ACNT_QTY
                 +MVIN_ACNT_QTY
                 +CSLDT_ABND_ACNT_QTY
                 +PRDAY_CSLDT_PRERG_ACNT_QTY
                 +CLOSE_ABND_ACNT_QTY
                 -CSLDT_ACNT_QTY
                 -MVOUT_ACNT_QTY
                 -CLOSE_ACNT_QTY
            ELSE 0
            END) CNT4

  FROM
   AC_TBM_ACNT_QTY_AGRGT
  WHERE
       BASE_DT IN (
                    :BASE_DT, --당일
                    TO_CHAR(TO_DATE(:BASE_DT,'YYYYMMDD')-1,'YYYYMMDD'), --전일
                    TO_CHAR(LAST_DAY(ADD_MONTHS(TO_DATE(:BASE_DT,'YYYYMMDD'),-1)),'YYYYMMDD'), --전월
                    SUBSTR(TO_CHAR(ADD_MONTHS(TO_DATE(/*!type char(8)*/ /*!기준일 */:BASE_DT,'YYYYMMDD'),-12),'YYYYMMDD'),1,4)||'1231' --전년
                    )
  AND PRDT_DTL_CODE = '13' --CMA전용위탁
  GROUP BY PDPTN_CODE, PRDT_DTL_CODE

        UNION ALL

        SELECT
      4 SEQ,
   COUNT(CASE WHEN ACNT_OPN_DT = :BASE_DT
              THEN ACNT_NO
              END) CNT1,
   COUNT(CASE WHEN ACNT_OPN_DT = TO_CHAR(TO_DATE(:BASE_DT,'YYYYMMDD')-1,'YYYYMMDD')
              THEN ACNT_NO
              END) CNT2,
   COUNT(CASE WHEN ACNT_OPN_DT = TO_CHAR(LAST_DAY(ADD_MONTHS(TO_DATE(:BASE_DT,'YYYYMMDD'),-1)),'YYYYMMDD')
              THEN ACNT_NO
              END) CNT3,
   COUNT(CASE WHEN ACNT_OPN_DT = SUBSTR(TO_CHAR(ADD_MONTHS(TO_DATE(/*!type char(8)*/ /*!기준일 */:BASE_DT,'YYYYMMDD'),-12),'YYYYMMDD'),1,4)||'1231'
              THEN ACNT_NO
              END) CNT4
  FROM
   BM_TBM_ACNT
  WHERE
      ACNT_OPN_DT  IN (
                     :BASE_DT, --당일
                     TO_CHAR(TO_DATE(:BASE_DT,'YYYYMMDD')-1,'YYYYMMDD'), --전일
                     TO_CHAR(LAST_DAY(ADD_MONTHS(TO_DATE(:BASE_DT,'YYYYMMDD'),-1)),'YYYYMMDD'), --전월
                     SUBSTR(TO_CHAR(ADD_MONTHS(TO_DATE(/*!type char(8)*/ /*!기준일 */:BASE_DT,'YYYYMMDD'),-12),'YYYYMMDD'),1,4)||'1231' --전년
                     )
  AND ACNT_STAT_CODE IN ( '00', '09')
  AND PDPTN_CODE = '00'
  )VVV1,
  (
 SELECT DECODE(UNDGL_CODE,'009',1,'010',2,'011',3,'012',4) SEQ
       ,SUM(MTH_TRGT_VAL) CNT
 FROM MG_TBL_MTHLY_UNDGL
 WHERE BASE_YYMM = SUBSTR(:BASE_DT,1,6)
 AND AGRGT_ORGZ_CLSS_CODE = '01' --자산
 AND UNDGL_CODE IN ('009','010','011','012')
 GROUP BY DECODE(UNDGL_CODE,'009',1,'010',2,'011',3,'012',4)
 )VVV2
WHERE VVV1.SEQ = VVV2.SEQ(+)
ORDER BY VVV1.SEQ

 

'작업일지' 카테고리의 다른 글

20100605_Migration 작업  (0) 2015.09.14
20100705~20100707 Tibero Exp,Imp 작업  (0) 2015.09.14
금융상품실적현황(EIS개발)  (0) 2015.09.14
위탁약정현황(EIS개발)  (0) 2015.09.14
날짜 조회(EIS개발)  (0) 2015.09.14