From efadd43d85d20d737a1cf1c2536aee9abab1d7ba Mon Sep 17 00:00:00 2001 From: chengjie Date: Thu, 18 Jul 2024 17:20:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4=EF=BC=8C?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E9=87=8D=E6=96=B0=E5=AE=89=E8=A3=85=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/irbs/IRBS_LOAN_BORR_INFO.csv | 5 + .../liquibase/data/irbs/NS_R_CFG_RPT_SQL.csv | 1168 ++++++++++------- .../repository/DefaultAutoTmpRepository.java | 2 +- .../repository/RebirthAutoTmpRepository.java | 16 +- .../impl/RebirthAutoBatchServiceImpl.java | 9 +- .../META-INF/platform/plugins/parameters.json | 24 +- .../defaultManager/i18n/messages.properties | 7 +- .../i18n/messages_tw_CN.properties | 7 +- .../i18n/messages_zh_CN.properties | 7 +- .../impl/RiskExposureBatchServiceImpl.java | 28 +- .../irbs/riskExposure/utils/RptSqlFormat.java | 36 + 11 files changed, 766 insertions(+), 543 deletions(-) create mode 100644 irbs.riskExposure/src/main/java/irbs/riskExposure/utils/RptSqlFormat.java diff --git a/app.irbs/src/main/resources/liquibase/data/irbs/IRBS_LOAN_BORR_INFO.csv b/app.irbs/src/main/resources/liquibase/data/irbs/IRBS_LOAN_BORR_INFO.csv index be98667..f373d12 100644 --- a/app.irbs/src/main/resources/liquibase/data/irbs/IRBS_LOAN_BORR_INFO.csv +++ b/app.irbs/src/main/resources/liquibase/data/irbs/IRBS_LOAN_BORR_INFO.csv @@ -265,3 +265,8 @@ "20230228","3007520303",,"131365107007520220527250184198","HT0107503070220220531004",,,,,,,,,,,,"1000000.000000",,,,,,,,,,,,,,,,,,,,,,, "20230228","3007698100",,"JJ0103520420230112001","HT0103503010220230112001",,,,,,,,,,,,"3950000.000000",,,,,,,,,,,,,,,,,,,,,,, "20230228","3007545797",,"JJ0101820420220930001","HT0101803010920220929001",,,,,,,,,,,,"550000.000000",,,,,,,,,,,,,,,,,,,,,,, +"20240630","1",,"12345678","HT0101803010920220929001",,,,,,,,,,,,"550000.000000",,,,,,,,,,,,"30",,,,,,,,,,, +"20240630","2",,"223456789","HT01018030109202209294",,,,,,,,,,,,"550000.000000",,,,,"61.000000","1001.000000",,,,,,"",,,,,,,,,,, +"20240630","3",,"223456789","HT01018030109202209295",,,,,,,,,,,,"550000.000000",,,,,,,,,,,,"","1",,,,,,,,,, +"20240630","4",,"323456789","HT01018030109202209296",,,,,,,,,,,,"550000.000000",,,,,,,,,,,,"","",,,,"3.000000",,,,,, +"20240630","5",,"623456789","HT01018030109202209296",,,,,,,,,,,,"550000.000000",,,,,,,,,,,,"","",,,,"3.000000",,,,,, \ No newline at end of file diff --git a/app.irbs/src/main/resources/liquibase/data/irbs/NS_R_CFG_RPT_SQL.csv b/app.irbs/src/main/resources/liquibase/data/irbs/NS_R_CFG_RPT_SQL.csv index 6471200..2af189d 100644 --- a/app.irbs/src/main/resources/liquibase/data/irbs/NS_R_CFG_RPT_SQL.csv +++ b/app.irbs/src/main/resources/liquibase/data/irbs/NS_R_CFG_RPT_SQL.csv @@ -150,50 +150,99 @@ SELECT ELSE '高度' END AS RISK_LEVEL\, C.NORMAL_CNT\,C.DEF_CNT\,C.CUST_CNT FROM B LEFT JOIN C ON C.EFFECTIVE_Y = B.EFFECTIVE_Y",,,,,, -"2","rptRatingModelFocusDist","客户评级模型敞口集中度分布报表","MYSQL","WITH A AS ( - SELECT +"12","rptRatingDistribution","客户评级分布报表","DM DBMS","WITH A AS ( + SELECT + T.ORIGINAL_LEVEL AS FINAL_LEVEL + \,T.ORDER_NUM + \,COUNT(1) AS CUST_CNT + \,SUM(IFNULL(T.BORR_BAL\,0)) AS BORR_BAL + \,SUM(CASE WHEN T.EFFECTIVE_MONTH = CAST( DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) THEN 1 ELSE 0 END) AS CURR_INCT_CNT + \,SUM(CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END) AS DEF_CUST_CNT + FROM ( + SELECT + V.CUST_NO\, + V.ORIGINAL_LEVEL\, + V.ORDER_NUM\, + V.FINAL_LEVEL\, + V.BORR_BAL\, + V.EFFECTIVE_MONTH + FROM VIEW_RPT_BASE_INFO V + WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME + AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) + AND V.MODEL_CODE = '#MODEL_CODE' + AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE' + ) T GROUP BY T.ORIGINAL_LEVEL\, T.ORDER_NUM +)\, +B AS ( + SELECT + CAST(SUM(CUST_CNT) AS DECIMAL) AS TOTAL_CUST_CNT + \,CAST(SUM(BORR_BAL) AS DECIMAL) AS TOTAL_BORR_BAL + \,CAST(SUM(CURR_INCT_CNT) AS DECIMAL) AS TOTAL_CURR_INCT_CNT + \,CAST(SUM(DEF_CUST_CNT) AS DECIMAL) AS TOTAL_DEF_CUST_CNT + FROM A +) +SELECT + A.FINAL_LEVEL\, + A.CUST_CNT\, + ROUND(CASE WHEN A.CUST_CNT = 0 THEN 0 ELSE A.CUST_CNT / B.TOTAL_CUST_CNT END\,4) AS CUST_RATIO\, + A.BORR_BAL\, + ROUND(CASE WHEN A.BORR_BAL = 0 THEN 0 ELSE A.BORR_BAL / B.TOTAL_BORR_BAL END\,4) AS BORR_BAL_RATIO\, + A.CURR_INCT_CNT\, + ROUND(CASE WHEN A.CURR_INCT_CNT = 0 THEN 0 ELSE A.CURR_INCT_CNT / B.TOTAL_CURR_INCT_CNT END\,4) AS CURR_INCT_RATIO\, + A.DEF_CUST_CNT\, + ROUND(CASE WHEN A.DEF_CUST_CNT = 0 THEN 0 ELSE A.DEF_CUST_CNT / B.TOTAL_DEF_CUST_CNT END\,4) AS DEF_CUST_RATIO +FROM A LEFT JOIN B ON 1 = 1 +ORDER BY A.ORDER_NUM",,,,,, +"13","rptRatingModelFocusDist","客户评级模型敞口集中度分布报表","DM DBMS","WITH A AS ( + SELECT T.MODEL_CODE\, T.MODEL_NAME\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AAA+' THEN 1 ELSE 0 END ) AS AAA_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AA+' THEN 1 ELSE 0 END ) AS AA_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AA-' THEN 1 ELSE 0 END ) AS AA_MINUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'C' THEN 1 ELSE 0 END ) AS C_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT + SUM( CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT FROM ( - SELECT + SELECT V.FINAL_LEVEL\, V.MODEL_CODE\, V.MODEL_NAME - FROM VIEW_RPT_BASE_INFO V + FROM VIEW_RPT_BASE_INFO V WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE' ) T GROUP BY T.MODEL_CODE\, T.MODEL_NAME )\, B AS ( - SELECT + SELECT COUNT(CUST_NO) AS TOTAL_CUST_CNT - FROM VIEW_RPT_BASE_INFO V + FROM VIEW_RPT_BASE_INFO V WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) - AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE' + AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE' ) -SELECT +SELECT A.MODEL_NAME\, + A.AAA_PLUS_CNT\, + CASE WHEN A.AAA_PLUS_CNT=0 THEN 0 ELSE A.AAA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AAA_PLUS_RATIO\, A.AAA_CNT\, CASE WHEN A.AAA_CNT=0 THEN 0 ELSE A.AAA_CNT/B.TOTAL_CUST_CNT END AS AAA_RATIO\, + A.AA_PLUS_CNT\, + CASE WHEN A.AA_PLUS_CNT=0 THEN 0 ELSE A.AA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AA_PLUS_RATIO\, A.AA_CNT\, CASE WHEN A.AA_CNT=0 THEN 0 ELSE A.AA_CNT/B.TOTAL_CUST_CNT END AS AA_RATIO\, + A.AA_MINUS_CNT\, + CASE WHEN A.AA_MINUS_CNT=0 THEN 0 ELSE A.AA_MINUS_CNT/B.TOTAL_CUST_CNT END AS AA_MINUS_RATIO\, A.A_PLUS_CNT\, CASE WHEN A.A_PLUS_CNT=0 THEN 0 ELSE A.A_PLUS_CNT/B.TOTAL_CUST_CNT END AS A_PLUS_RATIO\, A.A_CNT\, @@ -202,14 +251,8 @@ SELECT CASE WHEN A.A_MINUS_CNT=0 THEN 0 ELSE A.A_MINUS_CNT/B.TOTAL_CUST_CNT END AS A_MINUS_RATIO\, A.BBB_CNT\, CASE WHEN A.BBB_CNT=0 THEN 0 ELSE A.BBB_CNT/B.TOTAL_CUST_CNT END AS BBB_RATIO\, - A.BB_PLUS_CNT\, - CASE WHEN A.BB_PLUS_CNT=0 THEN 0 ELSE A.BB_PLUS_CNT/B.TOTAL_CUST_CNT END AS BB_PLUS_RATIO\, A.BB_CNT\, CASE WHEN A.BB_CNT=0 THEN 0 ELSE A.BB_CNT/B.TOTAL_CUST_CNT END AS BB_RATIO\, - A.BB_MINUS_CNT\, - CASE WHEN A.BB_MINUS_CNT=0 THEN 0 ELSE A.BB_MINUS_CNT/B.TOTAL_CUST_CNT END AS BB_MINUS_RATIO\, - A.B_PLUS_CNT\, - CASE WHEN A.B_PLUS_CNT=0 THEN 0 ELSE A.B_PLUS_CNT/B.TOTAL_CUST_CNT END AS B_PLUS_RATIO\, A.B_CNT\, CASE WHEN A.B_CNT=0 THEN 0 ELSE A.B_CNT/B.TOTAL_CUST_CNT END AS B_RATIO\, A.CCC_CNT\, @@ -222,48 +265,54 @@ SELECT CASE WHEN A.D_CNT=0 THEN 0 ELSE A.D_CNT/B.TOTAL_CUST_CNT END AS D_RATIO FROM A LEFT JOIN B ON 1=1 ORDER BY A.MODEL_CODE",,,,,, -"3","rptRatingOrgFocusDist","客户评级分支机构集中度分布报表","MYSQL","WITH A AS ( - SELECT +"14","rptRatingOrgFocusDist","客户评级分支机构集中度分布报表","DM DBMS","WITH A AS ( + SELECT T.MANAGER_ORG_CODE\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AAA+' THEN 1 ELSE 0 END ) AS AAA_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AA+' THEN 1 ELSE 0 END ) AS AA_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AA-' THEN 1 ELSE 0 END ) AS AA_MINUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'C' THEN 1 ELSE 0 END ) AS C_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT + SUM( CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT FROM ( - SELECT + SELECT V.FINAL_LEVEL\, V.MANAGER_ORG_CODE - FROM VIEW_RPT_BASE_INFO V + FROM VIEW_RPT_BASE_INFO V WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) - AND V.MODEL_CODE = '#MODEL_CODE' + AND V.MODEL_CODE = '#MODEL_CODE' ) T GROUP BY T.MANAGER_ORG_CODE )\, B AS ( - SELECT - COUNT(CUST_NO) AS TOTAL_CUST_CNT - FROM VIEW_RPT_BASE_INFO V + SELECT + CAST(COUNT(CUST_NO) AS DECIMAL) AS TOTAL_CUST_CNT + FROM VIEW_RPT_BASE_INFO V WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) - AND V.MODEL_CODE = '#MODEL_CODE' + AND V.MODEL_CODE = '#MODEL_CODE' ) -SELECT - O.FD_NAME AS MANAGER_ORG_NAME\, +SELECT + NVL(O.FD_NAME\, A.MANAGER_ORG_CODE) AS MANAGER_ORG_NAME\, + A.AAA_PLUS_CNT\, + CASE WHEN A.AAA_PLUS_CNT=0 THEN 0 ELSE A.AAA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AAA_PLUS_RATIO\, A.AAA_CNT\, CASE WHEN A.AAA_CNT=0 THEN 0 ELSE A.AAA_CNT/B.TOTAL_CUST_CNT END AS AAA_RATIO\, + A.AA_PLUS_CNT\, + CASE WHEN A.AA_PLUS_CNT=0 THEN 0 ELSE A.AA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AA_PLUS_RATIO\, A.AA_CNT\, CASE WHEN A.AA_CNT=0 THEN 0 ELSE A.AA_CNT/B.TOTAL_CUST_CNT END AS AA_RATIO\, + A.AA_MINUS_CNT\, + CASE WHEN A.AA_MINUS_CNT=0 THEN 0 ELSE A.AA_MINUS_CNT/B.TOTAL_CUST_CNT END AS AA_MINUS_RATIO\, A.A_PLUS_CNT\, CASE WHEN A.A_PLUS_CNT=0 THEN 0 ELSE A.A_PLUS_CNT/B.TOTAL_CUST_CNT END AS A_PLUS_RATIO\, A.A_CNT\, @@ -272,14 +321,8 @@ SELECT CASE WHEN A.A_MINUS_CNT=0 THEN 0 ELSE A.A_MINUS_CNT/B.TOTAL_CUST_CNT END AS A_MINUS_RATIO\, A.BBB_CNT\, CASE WHEN A.BBB_CNT=0 THEN 0 ELSE A.BBB_CNT/B.TOTAL_CUST_CNT END AS BBB_RATIO\, - A.BB_PLUS_CNT\, - CASE WHEN A.BB_PLUS_CNT=0 THEN 0 ELSE A.BB_PLUS_CNT/B.TOTAL_CUST_CNT END AS BB_PLUS_RATIO\, A.BB_CNT\, CASE WHEN A.BB_CNT=0 THEN 0 ELSE A.BB_CNT/B.TOTAL_CUST_CNT END AS BB_RATIO\, - A.BB_MINUS_CNT\, - CASE WHEN A.BB_MINUS_CNT=0 THEN 0 ELSE A.BB_MINUS_CNT/B.TOTAL_CUST_CNT END AS BB_MINUS_RATIO\, - A.B_PLUS_CNT\, - CASE WHEN A.B_PLUS_CNT=0 THEN 0 ELSE A.B_PLUS_CNT/B.TOTAL_CUST_CNT END AS B_PLUS_RATIO\, A.B_CNT\, CASE WHEN A.B_CNT=0 THEN 0 ELSE A.B_CNT/B.TOTAL_CUST_CNT END AS B_RATIO\, A.CCC_CNT\, @@ -293,50 +336,56 @@ SELECT FROM A LEFT JOIN B ON 1=1 LEFT JOIN FR_AA_ORG O ON O.FD_CODE = A.MANAGER_ORG_CODE ORDER BY A.MANAGER_ORG_CODE",,,,,, -"4","rptRatingIndustryFocusDist","客户评级行业集中度分布报表","MYSQL","WITH A AS ( - SELECT +"15","rptRatingIndustryFocusDist","客户评级行业集中度分布报表","DM DBMS","WITH A AS ( + SELECT T.INDUSTRY_CODE\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AAA+' THEN 1 ELSE 0 END ) AS AAA_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AA+' THEN 1 ELSE 0 END ) AS AA_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AA-' THEN 1 ELSE 0 END ) AS AA_MINUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'C' THEN 1 ELSE 0 END ) AS C_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT + SUM( CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT FROM ( - SELECT + SELECT V.FINAL_LEVEL\, V.INDUSTRY_CODE - FROM VIEW_RPT_BASE_INFO V + FROM VIEW_RPT_BASE_INFO V WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME - AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) - AND B.MODEL_CODE='#MODEL_CODE' + AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) + AND B.MODEL_CODE='#MODEL_CODE' AND B.MANAGER_ORG_CODE='#MANAGER_ORG_CODE' ) T GROUP BY T.INDUSTRY_CODE )\, B AS ( - SELECT - COUNT(CUST_NO) AS TOTAL_CUST_CNT - FROM VIEW_RPT_BASE_INFO V + SELECT + CAST(COUNT(CUST_NO) AS DECIMAL) AS TOTAL_CUST_CNT + FROM VIEW_RPT_BASE_INFO V WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) - AND B.MODEL_CODE='#MODEL_CODE' + AND B.MODEL_CODE='#MODEL_CODE' AND B.MANAGER_ORG_CODE='#MANAGER_ORG_CODE' ) -SELECT +SELECT I.INDUSTRY_NAME\, + A.AAA_PLUS_CNT\, + CASE WHEN A.AAA_PLUS_CNT=0 THEN 0 ELSE A.AAA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AAA_PLUS_RATIO\, A.AAA_CNT\, CASE WHEN A.AAA_CNT=0 THEN 0 ELSE A.AAA_CNT/B.TOTAL_CUST_CNT END AS AAA_RATIO\, + A.AA_PLUS_CNT\, + CASE WHEN A.AA_PLUS_CNT=0 THEN 0 ELSE A.AA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AA_PLUS_RATIO\, A.AA_CNT\, CASE WHEN A.AA_CNT=0 THEN 0 ELSE A.AA_CNT/B.TOTAL_CUST_CNT END AS AA_RATIO\, + A.AA_MINUS_CNT\, + CASE WHEN A.AA_MINUS_CNT=0 THEN 0 ELSE A.AA_MINUS_CNT/B.TOTAL_CUST_CNT END AS AA_MINUS_RATIO\, A.A_PLUS_CNT\, CASE WHEN A.A_PLUS_CNT=0 THEN 0 ELSE A.A_PLUS_CNT/B.TOTAL_CUST_CNT END AS A_PLUS_RATIO\, A.A_CNT\, @@ -345,14 +394,8 @@ SELECT CASE WHEN A.A_MINUS_CNT=0 THEN 0 ELSE A.A_MINUS_CNT/B.TOTAL_CUST_CNT END AS A_MINUS_RATIO\, A.BBB_CNT\, CASE WHEN A.BBB_CNT=0 THEN 0 ELSE A.BBB_CNT/B.TOTAL_CUST_CNT END AS BBB_RATIO\, - A.BB_PLUS_CNT\, - CASE WHEN A.BB_PLUS_CNT=0 THEN 0 ELSE A.BB_PLUS_CNT/B.TOTAL_CUST_CNT END AS BB_PLUS_RATIO\, A.BB_CNT\, CASE WHEN A.BB_CNT=0 THEN 0 ELSE A.BB_CNT/B.TOTAL_CUST_CNT END AS BB_RATIO\, - A.BB_MINUS_CNT\, - CASE WHEN A.BB_MINUS_CNT=0 THEN 0 ELSE A.BB_MINUS_CNT/B.TOTAL_CUST_CNT END AS BB_MINUS_RATIO\, - A.B_PLUS_CNT\, - CASE WHEN A.B_PLUS_CNT=0 THEN 0 ELSE A.B_PLUS_CNT/B.TOTAL_CUST_CNT END AS B_PLUS_RATIO\, A.B_CNT\, CASE WHEN A.B_CNT=0 THEN 0 ELSE A.B_CNT/B.TOTAL_CUST_CNT END AS B_RATIO\, A.CCC_CNT\, @@ -451,134 +494,134 @@ LEFT JOIN ( 21 AS ORDER_NUM ) I ON I.INDUSTRY_CODE = A.INDUSTRY_CODE ORDER BY I.ORDER_NUM",,,,,, -"5","rptRatingNumberMigrate","客户评级迁移报表(客户数)","MYSQL","WITH CURR AS ( - SELECT +"16","rptRatingNumberMigrate","客户评级迁移报表(客户数)","DM DBMS","WITH CURR AS ( + SELECT R.CUST_NO\, R.FINAL_LEVEL\, R.ORDER_NUM\, R.EFFECTIVE_MONTH\, - R.RATING_STATUS + R.RATING_STATUS FROM VIEW_RPT_BASE_INFO R WHERE R.EFFECTIVE_TIME = R.MAX_EFFECTIVE_TIME - AND R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, '%Y%m' ) AS DECIMAL ) + AND R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -12 )\, '%Y%m' ) AS DECIMAL ) AND CAST(DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' ) AS DECIMAL) AND R.MODEL_CODE='#MODEL_CODE' AND R.MANAGER_ORG_CODE='#MANAGER_ORG_CODE' )\, -LAST AS ( - SELECT +LAST_R AS ( + SELECT R.CUST_NO\, R.FINAL_LEVEL\, R.ORDER_NUM\, R.EFFECTIVE_MONTH\, R.RATING_STATUS FROM VIEW_RPT_BASE_INFO R - WHERE R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 2 YEAR )\, '%Y%m' ) AS DECIMAL) - AND CAST(DATE_FORMAT( DATE_ADD( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, INTERVAL - 1 MONTH )\, '%Y%m' ) AS DECIMAL) + WHERE R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -24 )\, '%Y%m' ) AS DECIMAL) + AND CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -13 )\, '%Y%m' ) AS DECIMAL) AND R.MODEL_CODE='#MODEL_CODE' AND R.MANAGER_ORG_CODE='#MANAGER_ORG_CODE' )\, -NEW AS ( +NEW_R AS ( SELECT '新增客户' AS FINAL_LEVEL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA+' THEN 1 ELSE 0 END ) AS AAA_PLUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA+' THEN 1 ELSE 0 END ) AS AA_PLUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA-' THEN 1 ELSE 0 END ) AS AA_MINUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'C' THEN 1 ELSE 0 END ) AS C_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT\, 0 AS NOT_RATING_CNT\,0 AS UP_CNT\,0 AS DOWN_CNT\,0 AS UP_RATIO\, - 0 AS DOWN_RATIO\,0 AS CHG_EXPONENT - FROM CURR WHERE NOT EXISTS ( SELECT 1 FROM LAST WHERE LAST.CUST_NO = CURR.CUST_NO ) + 0 AS DOWN_RATIO\,0 AS CHG_EXPONENT + FROM CURR WHERE NOT EXISTS ( SELECT 1 FROM LAST_R WHERE LAST_R.CUST_NO = CURR.CUST_NO ) )\, NR AS ( SELECT - LAST.FINAL_LEVEL\, - COUNT( 1 ) AS NOT_RATING_CNT - FROM LAST - WHERE NOT EXISTS ( SELECT 1 FROM CURR WHERE CURR.CUST_NO = LAST.CUST_NO ) - GROUP BY LAST.FINAL_LEVEL + LAST_R.FINAL_LEVEL\, + CAST(COUNT( 1 ) AS DECIMAL) AS NOT_RATING_CNT + FROM LAST_R + WHERE NOT EXISTS ( SELECT 1 FROM CURR WHERE CURR.CUST_NO = LAST_R.CUST_NO ) + GROUP BY LAST_R.FINAL_LEVEL )\, CHG AS ( SELECT - SUM( CASE WHEN CURR.FINAL_LEVEL <> LAST.FINAL_LEVEL THEN 1 ELSE 0 END ) AS CHG_CNT - FROM CURR LEFT JOIN LAST ON LAST.CUST_NO = CURR.CUST_NO -) - - - + CAST(SUM( CASE WHEN CURR.FINAL_LEVEL <> LAST_R.FINAL_LEVEL THEN 1 ELSE 0 END ) AS DECIMAL) AS CHG_CNT + FROM CURR LEFT JOIN LAST_R ON LAST_R.CUST_NO = CURR.CUST_NO +) + + + SELECT - * + * FROM ( SELECT S.SCALE_LEVEL AS FINAL_LEVEL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA+' THEN 1 ELSE 0 END ) AS AAA_PLUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA+' THEN 1 ELSE 0 END ) AS AA_PLUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA-' THEN 1 ELSE 0 END ) AS AA_MINUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'C' THEN 1 ELSE 0 END ) AS C_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT\, IFNULL( NR.NOT_RATING_CNT\, 0 ) AS NOT_RATING_CNT\, - SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN 1 ELSE 0 END ) AS UP_CNT\, - SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN 1 ELSE 0 END ) AS DOWN_CNT\, - CASE WHEN CHG.CHG_CNT = 0 THEN 0 - ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT + SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN 1 ELSE 0 END ) AS UP_CNT\, + SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN 1 ELSE 0 END ) AS DOWN_CNT\, + CASE WHEN CHG.CHG_CNT = 0 THEN 0 + ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT END AS UP_RATIO\, - CASE WHEN CHG.CHG_CNT = 0 THEN 0 - ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT + CASE WHEN CHG.CHG_CNT = 0 THEN 0 + ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT END AS DOWN_RATIO\,( CASE - + WHEN CHG.CHG_CNT = 0 THEN - 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT - END + 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT + END )-( CASE - + WHEN CHG.CHG_CNT = 0 THEN - 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT - END - ) AS CHG_EXPONENT + 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT + END + ) AS CHG_EXPONENT FROM NS_CFG_MAIN_SCALE S - LEFT JOIN LAST ON LAST.FINAL_LEVEL = S.SCALE_LEVEL - LEFT JOIN CURR ON CURR.CUST_NO = LAST.CUST_NO + LEFT JOIN LAST_R ON LAST_R.FINAL_LEVEL = S.SCALE_LEVEL + LEFT JOIN CURR ON CURR.CUST_NO = LAST_R.CUST_NO LEFT JOIN NR ON NR.FINAL_LEVEL = S.SCALE_LEVEL - LEFT JOIN CHG ON 1 = 1 + LEFT JOIN CHG ON 1 = 1 GROUP BY S.SCALE_LEVEL\, S.ORDER_NUM\, NR.NOT_RATING_CNT\, - CHG.CHG_CNT + CHG.CHG_CNT ORDER BY - S.ORDER_NUM + S.ORDER_NUM ) A UNION SELECT - * + * FROM - NEW",,,,,, -"6","rptRatingLoanBalanceMigrate","客户评级迁移报表(信贷余额)","MYSQL","WITH CURR AS ( - SELECT + NEW_R",,,,,, +"17","rptRatingLoanBalanceMigrate","客户评级迁移报表(信贷余额)","DM DBMS","WITH CURR AS ( + SELECT R.CUST_NO\, R.FINAL_LEVEL\, R.ORDER_NUM\, @@ -588,13 +631,13 @@ FROM FROM VIEW_RPT_BASE_INFO R WHERE R.EFFECTIVE_TIME = R.MAX_EFFECTIVE_TIME - AND R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, '%Y%m' ) AS DECIMAL ) + AND R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -12 )\, '%Y%m' ) AS DECIMAL ) AND CAST(DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' ) AS DECIMAL) AND R.MODEL_CODE='#MODEL_CODE' AND R.MANAGER_ORG_CODE='#MANAGER_ORG_CODE' )\, -LAST AS ( - SELECT +LAST_R AS ( + SELECT R.CUST_NO\, R.FINAL_LEVEL\, R.ORDER_NUM\, @@ -602,82 +645,82 @@ LAST AS ( R.RATING_STATUS\, R.BORR_BAL FROM VIEW_RPT_BASE_INFO R - WHERE R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 2 YEAR )\, '%Y%m' ) AS DECIMAL) - AND CAST(DATE_FORMAT( DATE_ADD( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, INTERVAL - 1 MONTH )\, '%Y%m' ) AS DECIMAL) + WHERE R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -24 )\, '%Y%m' ) AS DECIMAL) + AND CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -13 )\, '%Y%m' ) AS DECIMAL) AND R.MODEL_CODE='#MODEL_CODE' AND R.MANAGER_ORG_CODE='#MANAGER_ORG_CODE' )\, -NEW AS ( +NEW_R AS ( SELECT '新增客户' AS FINAL_LEVEL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AAA_PLUS_BAL\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AAA_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_PLUS_BAL\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_MINUS_BAL\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_PLUS_BAL\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_BAL\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_MINUS_BAL\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BBB_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_PLUS_BAL\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_MINUS_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'B+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_PLUS_BAL\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_BAL\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CCC_BAL\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CC_BAL\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'C' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS C_BAL\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS D_BAL\, - 0 AS NOT_RATING_BAL\,0 AS UP_BAL\,0 AS DOWN_BAL\,0 AS UP_RATIO\,0 AS DOWN_RATIO\,0 AS CHG_EXPONENT - FROM CURR - WHERE NOT EXISTS ( SELECT 1 FROM LAST WHERE LAST.CUST_NO = CURR.CUST_NO ) + 0 AS NOT_RATING_BAL\,0 AS UP_BAL\,0 AS DOWN_BAL\,0 AS UP_RATIO\,0 AS DOWN_RATIO\,0 AS CHG_EXPONENT + FROM CURR + WHERE NOT EXISTS ( SELECT 1 FROM LAST_R WHERE LAST_R.CUST_NO = CURR.CUST_NO ) )\, NR AS ( SELECT - LAST.FINAL_LEVEL\,SUM(IFNULL( LAST.BORR_BAL\, 0 )) AS NOT_RATING_BAL - FROM LAST - WHERE NOT EXISTS ( SELECT 1 FROM CURR WHERE CURR.CUST_NO = LAST.CUST_NO ) - GROUP BY LAST.FINAL_LEVEL + LAST_R.FINAL_LEVEL\,SUM(IFNULL( LAST_R.BORR_BAL\, 0 )) AS NOT_RATING_BAL + FROM LAST_R + WHERE NOT EXISTS ( SELECT 1 FROM CURR WHERE CURR.CUST_NO = LAST_R.CUST_NO ) + GROUP BY LAST_R.FINAL_LEVEL )\, CHG AS ( SELECT - SUM( CASE WHEN CURR.FINAL_LEVEL <> LAST.FINAL_LEVEL THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CHG_BAL - FROM CURR LEFT JOIN LAST ON LAST.CUST_NO = CURR.CUST_NO -) + SUM( CASE WHEN CURR.FINAL_LEVEL <> LAST_R.FINAL_LEVEL THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CHG_BAL + FROM CURR LEFT JOIN LAST_R ON LAST_R.CUST_NO = CURR.CUST_NO +) SELECT * FROM ( SELECT S.SCALE_LEVEL AS FINAL_LEVEL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AAA_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_PLUS_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_MINUS_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BBB_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_PLUS_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_MINUS_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'B+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_PLUS_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CCC_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CC_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'C' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS C_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS D_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AAA_PLUS_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AAA_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_PLUS_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_MINUS_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_PLUS_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_MINUS_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BBB_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CCC_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CC_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'C' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS C_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS D_BAL\, NR.NOT_RATING_BAL\, - SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS UP_BAL\, - SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS DOWN_BAL\, - CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL + SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS UP_BAL\, + SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS DOWN_BAL\, + CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL END AS UP_RATIO\, - CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL + CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL END AS DOWN_RATIO\,( - CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL - END)-(CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL END ) AS CHG_EXPONENT + CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL + END)-(CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL END ) AS CHG_EXPONENT FROM NS_CFG_MAIN_SCALE S - LEFT JOIN LAST ON LAST.FINAL_LEVEL = S.SCALE_LEVEL - LEFT JOIN CURR ON CURR.CUST_NO = LAST.CUST_NO + LEFT JOIN LAST_R ON LAST_R.FINAL_LEVEL = S.SCALE_LEVEL + LEFT JOIN CURR ON CURR.CUST_NO = LAST_R.CUST_NO LEFT JOIN NR ON NR.FINAL_LEVEL = S.SCALE_LEVEL - LEFT JOIN CHG ON 1 = 1 - GROUP BY S.SCALE_LEVEL\,S.ORDER_NUM\,NOT_RATING_BAL\,CHG.CHG_BAL - ORDER BY S.ORDER_NUM ) A + LEFT JOIN CHG ON 1 = 1 + GROUP BY S.SCALE_LEVEL\,S.ORDER_NUM\,NOT_RATING_BAL\,CHG.CHG_BAL + ORDER BY S.ORDER_NUM ) A UNION -SELECT * FROM NEW",,,,,, -"7","rptModelMonitorDiff","模型区分能力监控报表","MYSQL","WITH A AS ( +SELECT * FROM NEW_R",,,,,, +"18","rptModelMonitorDiff","模型区分能力监控报表","DM DBMS","WITH A AS ( SELECT 0 AS DOWN\, 10 AS UP\, 1 AS SCORE_AREA UNION SELECT 10 AS DOWN\, 20 AS UP\, 2 AS SCORE_AREA UNION SELECT 20 AS DOWN\, 30 AS UP\, 3 AS SCORE_AREA UNION @@ -687,7 +730,7 @@ SELECT * FROM NEW",,,,,, SELECT 60 AS DOWN\, 70 AS UP\, 7 AS SCORE_AREA UNION SELECT 70 AS DOWN\, 80 AS UP\, 8 AS SCORE_AREA UNION SELECT 80 AS DOWN\, 90 AS UP\, 9 AS SCORE_AREA UNION - SELECT 90 AS DOWN\, 100 AS UP\, 10 AS SCORE_AREA + SELECT 90 AS DOWN\, 100 AS UP\, 10 AS SCORE_AREA )\, B AS ( SELECT @@ -695,22 +738,22 @@ B AS ( A.SCORE_AREA\, COUNT( V.FINAL_LEVEL ) AS CUST_CNT\, SUM( CASE WHEN V.FINAL_LEVEL <> 'D' THEN 1 ELSE 0 END ) AS GOOD_CNT\, - SUM( CASE WHEN V.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS BAD_CNT - FROM VIEW_RPT_BASE_INFO V\, A - WHERE V.MODEL_SCORE > A.DOWN - AND V.MODEL_SCORE <= A.UP - AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL -#YEAR_PERIOD YEAR )\, '%Y%m' ) - AND DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' ) + SUM( CASE WHEN V.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS BAD_CNT + FROM VIEW_RPT_BASE_INFO V\, A + WHERE V.MODEL_SCORE > A.DOWN + AND V.MODEL_SCORE <= A.UP + AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -12 )\, '%Y%m' ) + AND DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' ) AND V.MODEL_CODE='#MODEL_CODE' - GROUP BY V.EFFECTIVE_Q\,A.SCORE_AREA + GROUP BY V.EFFECTIVE_Q\,A.SCORE_AREA )\, C AS ( SELECT DISTINCT B.EFFECTIVE_Q\, B.SCORE_AREA\, - SUM( CUST_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q ) AS TOT_CUST_CNT\, - SUM( B.GOOD_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q ) AS TOT_GOOD_CNT\, - SUM( B.BAD_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q ) AS TOT_BAD_CNT + CAST(SUM( CUST_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q )AS DECIMAL) AS TOT_CUST_CNT\, + CAST(SUM( B.GOOD_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q ) AS DECIMAL) AS TOT_GOOD_CNT\, + CAST(SUM( B.BAD_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q ) AS DECIMAL) AS TOT_BAD_CNT FROM B )\, D AS ( @@ -718,104 +761,104 @@ D AS ( T1.EFFECTIVE_Q\, T1.SCORE_AREA\, SUM( T2.GOOD_CNT ) AS GOOD_CNT\, - SUM( T2.BAD_CNT ) AS BAD_CNT + SUM( T2.BAD_CNT ) AS BAD_CNT FROM( SELECT B.EFFECTIVE_Q\, B.SCORE_AREA\, SUM( B.GOOD_CNT ) AS GOOD_CNT\, - SUM( B.BAD_CNT ) AS BAD_CNT - FROM B - GROUP BY B.EFFECTIVE_Q\, B.SCORE_AREA + SUM( B.BAD_CNT ) AS BAD_CNT + FROM B + GROUP BY B.EFFECTIVE_Q\, B.SCORE_AREA ) T1 INNER JOIN ( SELECT B.EFFECTIVE_Q\, B.SCORE_AREA\, SUM( B.GOOD_CNT ) AS GOOD_CNT\, - SUM( B.BAD_CNT ) AS BAD_CNT - FROM B - GROUP BY B.EFFECTIVE_Q\, B.SCORE_AREA - ) T2 ON T1.EFFECTIVE_Q = T2.EFFECTIVE_Q - AND T1.SCORE_AREA >= T2.SCORE_AREA - GROUP BY T1.EFFECTIVE_Q\, T1.SCORE_AREA + SUM( B.BAD_CNT ) AS BAD_CNT + FROM B + GROUP BY B.EFFECTIVE_Q\, B.SCORE_AREA + ) T2 ON T1.EFFECTIVE_Q = T2.EFFECTIVE_Q + AND T1.SCORE_AREA >= T2.SCORE_AREA + GROUP BY T1.EFFECTIVE_Q\, T1.SCORE_AREA )\, E AS ( SELECT T1.EFFECTIVE_Q\, T1.SCORE_AREA\, SUM( T2.CUST_CNT ) AS CUST_CNT\, - SUM( T2.BAD_CNT ) AS BAD_CNT + SUM( T2.BAD_CNT ) AS BAD_CNT FROM( SELECT B.EFFECTIVE_Q\, B.SCORE_AREA\, SUM( B.CUST_CNT ) AS CUST_CNT\, - SUM( B.BAD_CNT ) AS BAD_CNT - FROM B - GROUP BY B.EFFECTIVE_Q\, B.SCORE_AREA + SUM( B.BAD_CNT ) AS BAD_CNT + FROM B + GROUP BY B.EFFECTIVE_Q\, B.SCORE_AREA ) T1 INNER JOIN ( SELECT B.EFFECTIVE_Q\, B.SCORE_AREA\, SUM( B.CUST_CNT ) AS CUST_CNT\, - SUM( B.BAD_CNT ) AS BAD_CNT - FROM B - GROUP BY B.EFFECTIVE_Q\, B.SCORE_AREA - ) T2 ON T1.EFFECTIVE_Q = T2.EFFECTIVE_Q - AND T1.SCORE_AREA >= T2.SCORE_AREA - GROUP BY T1.EFFECTIVE_Q\, T1.SCORE_AREA + SUM( B.BAD_CNT ) AS BAD_CNT + FROM B + GROUP BY B.EFFECTIVE_Q\, B.SCORE_AREA + ) T2 ON T1.EFFECTIVE_Q = T2.EFFECTIVE_Q + AND T1.SCORE_AREA >= T2.SCORE_AREA + GROUP BY T1.EFFECTIVE_Q\, T1.SCORE_AREA )\, KS AS ( SELECT T.EFFECTIVE_Q\, - MAX( T.DIFF ) AS KS + MAX( T.DIFF ) AS KS FROM( SELECT D.EFFECTIVE_Q\, D.SCORE_AREA\, - D.GOOD_CNT / C.TOT_GOOD_CNT AS GOOD_RATIO\, - D.BAD_CNT / C.TOT_BAD_CNT AS BAD_RATIO\, - ABS( D.GOOD_CNT / C.TOT_GOOD_CNT - D.BAD_CNT / C.TOT_BAD_CNT ) AS DIFF + CASE WHEN C.TOT_GOOD_CNT=0 THEN 0 ELSE D.GOOD_CNT / C.TOT_GOOD_CNT END AS GOOD_RATIO\, + CASE WHEN C.TOT_BAD_CNT=0 THEN 0 ELSE D.BAD_CNT / C.TOT_BAD_CNT END AS BAD_RATIO\, + ABS( (CASE WHEN C.TOT_GOOD_CNT=0 THEN 0 ELSE D.GOOD_CNT / C.TOT_GOOD_CNT END) - (CASE WHEN C.TOT_BAD_CNT=0 THEN 0 ELSE D.BAD_CNT / C.TOT_BAD_CNT END) ) AS DIFF FROM D - LEFT JOIN C ON C.EFFECTIVE_Q = D.EFFECTIVE_Q - AND C.SCORE_AREA = D.SCORE_AREA - ) T - GROUP BY T.EFFECTIVE_Q + LEFT JOIN C ON C.EFFECTIVE_Q = D.EFFECTIVE_Q + AND C.SCORE_AREA = D.SCORE_AREA + ) T + GROUP BY T.EFFECTIVE_Q )\, AR AS ( SELECT T.EFFECTIVE_Q\, - ROUND( SUM( T.DIFF )/( T.NORMAL_RATIO / 2 )\, 4 ) AS AR + ROUND( SUM( T.DIFF )/( T.NORMAL_RATIO / 2 )\, 4 ) AS AR FROM ( SELECT E.EFFECTIVE_Q\, E.SCORE_AREA\, - E.CUST_CNT / C.TOT_CUST_CNT AS CUST_RATIO\, - E.BAD_CNT / C.TOT_BAD_CNT AS BAD_RATIO\, - (E.BAD_CNT/C.TOT_BAD_CNT-E.CUST_CNT/C.TOT_CUST_CNT)/2*1/CC.TOT_CUST_CNT AS DIFF\, - (CC.TOT_CUST_CNT-CC.TOT_BAD_CNT)/CC.TOT_CUST_CNT AS NORMAL_RATIO - FROM E LEFT JOIN C ON C.EFFECTIVE_Q = E.EFFECTIVE_Q + CASE WHEN C.TOT_CUST_CNT=0 THEN 0 ELSE E.CUST_CNT / C.TOT_CUST_CNT END AS CUST_RATIO\, + CASE WHEN C.TOT_BAD_CNT=0 THEN 0 ELSE E.BAD_CNT / C.TOT_BAD_CNT END AS BAD_RATIO\, + ((CASE WHEN C.TOT_BAD_CNT=0 THEN 0 ELSE E.BAD_CNT/C.TOT_BAD_CNT END)-E.CUST_CNT/C.TOT_CUST_CNT)/2*1/CC.TOT_CUST_CNT AS DIFF\, + (CC.TOT_CUST_CNT-CC.TOT_BAD_CNT)/CC.TOT_CUST_CNT AS NORMAL_RATIO + FROM E LEFT JOIN C ON C.EFFECTIVE_Q = E.EFFECTIVE_Q AND C.SCORE_AREA = E.SCORE_AREA - LEFT JOIN ( SELECT DISTINCT C.EFFECTIVE_Q\, C.TOT_CUST_CNT\, C.TOT_BAD_CNT FROM C ) CC - ON CC.EFFECTIVE_Q = E.EFFECTIVE_Q - ) T GROUP BY T.EFFECTIVE_Q\, T.NORMAL_RATIO -) + LEFT JOIN ( SELECT DISTINCT C.EFFECTIVE_Q\, C.TOT_CUST_CNT\, C.TOT_BAD_CNT FROM C ) CC + ON CC.EFFECTIVE_Q = E.EFFECTIVE_Q + ) T GROUP BY T.EFFECTIVE_Q\, T.NORMAL_RATIO +) SELECT KS.EFFECTIVE_Q\, KS.KS\, AR.AR\, - CASE WHEN AR.AR >= 0.4 AND KS.KS >= 0.4 THEN '低度' - WHEN AR.AR >= 0.3 AND AR.AR < 0.4 AND KS.KS < 0.4 THEN '中度' - WHEN AR.AR < 0.3 OR KS.KS < 0.3 THEN '高度' + CASE WHEN AR.AR >= 0.4 AND KS.KS >= 0.4 THEN '低度' + WHEN AR.AR >= 0.3 AND AR.AR < 0.4 AND KS.KS < 0.4 THEN '中度' + WHEN AR.AR < 0.3 OR KS.KS < 0.3 THEN '高度' ELSE '低度' END AS RISK_LEVEL\, CC.TOT_NORMAL_CNT\, CC.TOT_BAD_CNT\, - CC.TOT_CUST_CNT + CC.TOT_CUST_CNT FROM KS INNER JOIN AR ON AR.EFFECTIVE_Q = KS.EFFECTIVE_Q -LEFT JOIN (SELECT DISTINCT C.EFFECTIVE_Q\, C.TOT_CUST_CNT\, C.TOT_BAD_CNT\, C.TOT_CUST_CNT - C.TOT_BAD_CNT AS TOT_NORMAL_CNT FROM C ) CC - ON CC.EFFECTIVE_Q = KS.EFFECTIVE_Q +LEFT JOIN (SELECT DISTINCT C.EFFECTIVE_Q\, C.TOT_CUST_CNT\, C.TOT_BAD_CNT\, C.TOT_CUST_CNT - C.TOT_BAD_CNT AS TOT_NORMAL_CNT FROM C ) CC + ON CC.EFFECTIVE_Q = KS.EFFECTIVE_Q ORDER BY KS.EFFECTIVE_Q",,,,,, -"8","rptModelMonitorStable","模型稳定性监控报表","MYSQL","WITH A AS ( +"19","rptModelMonitorStable","模型稳定性监控报表","DM DBMS","WITH A AS ( SELECT 0 AS DOWN\, 10 AS UP\, 1 AS SCORE_AREA UNION SELECT 10 AS DOWN\, 20 AS UP\, 2 AS SCORE_AREA UNION SELECT 20 AS DOWN\, 30 AS UP\, 3 AS SCORE_AREA UNION @@ -825,55 +868,55 @@ ORDER BY KS.EFFECTIVE_Q",,,,,, SELECT 60 AS DOWN\, 70 AS UP\, 7 AS SCORE_AREA UNION SELECT 70 AS DOWN\, 80 AS UP\, 8 AS SCORE_AREA UNION SELECT 80 AS DOWN\, 90 AS UP\, 9 AS SCORE_AREA UNION - SELECT 90 AS DOWN\, 100 AS UP\, 10 AS SCORE_AREA + SELECT 90 AS DOWN\, 100 AS UP\, 10 AS SCORE_AREA )\, B AS ( SELECT V.EFFECTIVE_Q\, A.SCORE_AREA\, - V.CUST_NO - FROM VIEW_RPT_BASE_INFO V\,A - WHERE V.MODEL_SCORE > A.DOWN - AND V.MODEL_SCORE <= A.UP - AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, '%Y%m' ) - AND DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' ) + V.CUST_NO + FROM VIEW_RPT_BASE_INFO V\,A + WHERE V.MODEL_SCORE > A.DOWN + AND V.MODEL_SCORE <= A.UP + AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -12 )\, '%Y%m' ) + AND DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' ) AND V.MODEL_CODE='#MODEL_CODE' )\, B1 AS ( SELECT EFFECTIVE_Q\, SCORE_AREA\, COUNT( 1 ) AS CUST_CNT FROM B GROUP BY EFFECTIVE_Q\, SCORE_AREA )\, -B2 AS ( SELECT EFFECTIVE_Q\, SUM( CUST_CNT ) AS TOT_CUST_CNT FROM B1 GROUP BY EFFECTIVE_Q )\, +B2 AS ( SELECT EFFECTIVE_Q\, CAST(SUM( CUST_CNT ) AS DECIMAL) AS TOT_CUST_CNT FROM B1 GROUP BY EFFECTIVE_Q )\, B3 AS ( SELECT B1.EFFECTIVE_Q\, B1.SCORE_AREA\, - B1.CUST_CNT / B2.TOT_CUST_CNT AS CURR_RATIO - FROM B1 LEFT JOIN B2 ON B2.EFFECTIVE_Q = B1.EFFECTIVE_Q - ORDER BY B1.EFFECTIVE_Q\, B1.SCORE_AREA + B1.CUST_CNT / B2.TOT_CUST_CNT AS CURR_RATIO + FROM B1 LEFT JOIN B2 ON B2.EFFECTIVE_Q = B1.EFFECTIVE_Q + ORDER BY B1.EFFECTIVE_Q\, B1.SCORE_AREA )\, C AS ( SELECT V.EFFECTIVE_Q\, A.SCORE_AREA\, - V.CUST_NO - FROM VIEW_RPT_BASE_INFO V\,A - WHERE V.MODEL_SCORE > A.DOWN AND V.MODEL_SCORE <= A.UP - AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 2 YEAR )\, '%Y%m' ) - AND DATE_FORMAT( DATE_ADD( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, INTERVAL - 1 MONTH )\, '%Y%m' ) + V.CUST_NO + FROM VIEW_RPT_BASE_INFO V\,A + WHERE V.MODEL_SCORE > A.DOWN AND V.MODEL_SCORE <= A.UP + AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -24 )\, '%Y%m' ) + AND DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -13 )\, '%Y%m' ) AND V.MODEL_CODE='#MODEL_CODE' )\, C1 AS ( SELECT EFFECTIVE_Q\, SCORE_AREA\, COUNT( 1 ) AS CUST_CNT FROM C GROUP BY EFFECTIVE_Q\, SCORE_AREA )\, -C2 AS ( SELECT EFFECTIVE_Q\, SUM( CUST_CNT ) AS TOT_CUST_CNT FROM C1 GROUP BY EFFECTIVE_Q )\, +C2 AS ( SELECT EFFECTIVE_Q\, CAST(SUM( CUST_CNT ) AS DECIMAL) AS TOT_CUST_CNT FROM C1 GROUP BY EFFECTIVE_Q )\, C3 AS ( SELECT C1.EFFECTIVE_Q\, C1.SCORE_AREA\, - C1.CUST_CNT / C2.TOT_CUST_CNT AS LAST_RATIO - FROM C1 LEFT JOIN C2 ON C2.EFFECTIVE_Q = C1.EFFECTIVE_Q -) + C1.CUST_CNT / C2.TOT_CUST_CNT AS LAST_RATIO + FROM C1 LEFT JOIN C2 ON C2.EFFECTIVE_Q = C1.EFFECTIVE_Q +) SELECT EFFECTIVE_Q\, ROUND(PSI\,4) AS PSI\, - CASE WHEN PSI <= 0.1 THEN '低度' WHEN PSI > 0.1 AND PSI <= 0.25 THEN '中度' - ELSE '高度' END AS RISK_LEVEL + CASE WHEN PSI <= 0.1 THEN '低度' WHEN PSI > 0.1 AND PSI <= 0.25 THEN '中度' + ELSE '高度' END AS RISK_LEVEL FROM ( SELECT EFFECTIVE_Q\, @@ -882,26 +925,98 @@ FROM ( SELECT B3.EFFECTIVE_Q\, B3.SCORE_AREA\, - ROUND(( B3.CURR_RATIO - C3.LAST_RATIO )*LN( B3.CURR_RATIO / C3.LAST_RATIO )\, 4 ) AS PSI - FROM B3 LEFT JOIN C3 ON RIGHT ( C3.EFFECTIVE_Q\, 1 )= RIGHT ( B3.EFFECTIVE_Q\, 1 ) - AND C3.SCORE_AREA = B3.SCORE_AREA - ) T GROUP BY T.EFFECTIVE_Q + ROUND(( B3.CURR_RATIO - C3.LAST_RATIO )*LN( B3.CURR_RATIO / C3.LAST_RATIO )\, 4 ) AS PSI + FROM B3 LEFT JOIN C3 ON RIGHT ( C3.EFFECTIVE_Q\, 1 )= RIGHT ( B3.EFFECTIVE_Q\, 1 ) + AND C3.SCORE_AREA = B3.SCORE_AREA + ) T GROUP BY T.EFFECTIVE_Q ) TT ORDER BY TT.EFFECTIVE_Q",,,,,, -"9","rptRatingOverturn","客户评级推翻情况报表","MYSQL","SELECT +"2","rptRatingModelFocusDist","客户评级模型敞口集中度分布报表","MYSQL","WITH A AS ( + SELECT + T.MODEL_CODE\, + T.MODEL_NAME\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AAA+' THEN 1 ELSE 0 END ) AS AAA_PLUS_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AA+' THEN 1 ELSE 0 END ) AS AA_PLUS_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AA-' THEN 1 ELSE 0 END ) AS AA_MINUS_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'C' THEN 1 ELSE 0 END ) AS C_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT + FROM ( + SELECT + V.FINAL_LEVEL\, + V.MODEL_CODE\, + V.MODEL_NAME + FROM VIEW_RPT_BASE_INFO V + WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME + AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) + AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE' + ) T GROUP BY T.MODEL_CODE\, T.MODEL_NAME +)\, +B AS ( + SELECT + COUNT(CUST_NO) AS TOTAL_CUST_CNT + FROM VIEW_RPT_BASE_INFO V + WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME + AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) + AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE' +) +SELECT + A.MODEL_NAME\, + A.AAA_PLUS_CNT\, + CASE WHEN A.AAA_PLUS_CNT=0 THEN 0 ELSE A.AAA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AAA_PLUS_RATIO\, + A.AAA_CNT\, + CASE WHEN A.AAA_CNT=0 THEN 0 ELSE A.AAA_CNT/B.TOTAL_CUST_CNT END AS AAA_RATIO\, + A.AA_PLUS_CNT\, + CASE WHEN A.AA_PLUS_CNT=0 THEN 0 ELSE A.AA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AA_PLUS_RATIO\, + A.AA_CNT\, + CASE WHEN A.AA_CNT=0 THEN 0 ELSE A.AA_CNT/B.TOTAL_CUST_CNT END AS AA_RATIO\, + A.AA_MINUS_CNT\, + CASE WHEN A.AA_MINUS_CNT=0 THEN 0 ELSE A.AA_MINUS_CNT/B.TOTAL_CUST_CNT END AS AA_MINUS_RATIO\, + A.A_PLUS_CNT\, + CASE WHEN A.A_PLUS_CNT=0 THEN 0 ELSE A.A_PLUS_CNT/B.TOTAL_CUST_CNT END AS A_PLUS_RATIO\, + A.A_CNT\, + CASE WHEN A.A_CNT=0 THEN 0 ELSE A.A_CNT/B.TOTAL_CUST_CNT END AS A_RATIO\, + A.A_MINUS_CNT\, + CASE WHEN A.A_MINUS_CNT=0 THEN 0 ELSE A.A_MINUS_CNT/B.TOTAL_CUST_CNT END AS A_MINUS_RATIO\, + A.BBB_CNT\, + CASE WHEN A.BBB_CNT=0 THEN 0 ELSE A.BBB_CNT/B.TOTAL_CUST_CNT END AS BBB_RATIO\, + A.BB_CNT\, + CASE WHEN A.BB_CNT=0 THEN 0 ELSE A.BB_CNT/B.TOTAL_CUST_CNT END AS BB_RATIO\, + A.B_CNT\, + CASE WHEN A.B_CNT=0 THEN 0 ELSE A.B_CNT/B.TOTAL_CUST_CNT END AS B_RATIO\, + A.CCC_CNT\, + CASE WHEN A.CCC_CNT=0 THEN 0 ELSE A.CCC_CNT/B.TOTAL_CUST_CNT END AS CCC_RATIO\, + A.CC_CNT\, + CASE WHEN A.CC_CNT=0 THEN 0 ELSE A.CC_CNT/B.TOTAL_CUST_CNT END AS CC_RATIO\, + A.C_CNT\, + CASE WHEN A.C_CNT=0 THEN 0 ELSE A.C_CNT/B.TOTAL_CUST_CNT END AS C_RATIO\, + A.D_CNT\, + CASE WHEN A.D_CNT=0 THEN 0 ELSE A.D_CNT/B.TOTAL_CUST_CNT END AS D_RATIO +FROM A LEFT JOIN B ON 1=1 +ORDER BY A.MODEL_CODE",,,,,, +"20","rptRatingOverturn","客户评级推翻情况报表","DM DBMS","SELECT T.EFFECTIVE_MONTH\, T.CUST_CNT\, T.OVERTURN_CNT\, - CASE WHEN T.OVERTURN_CNT = 0 THEN 0 ELSE T.OVERTURN_CNT/T.CUST_CNT END AS OVERTURN_RATIO\, - CASE WHEN UP_OVERTURN_CNT = 0 THEN 0 ELSE UP_OVERTURN_CNT/T.CUST_CNT END AS UP_OVERTURN_RATIO\, - CASE WHEN DOWN_OVERTURN_CNT = 0 THEN 0 ELSE DOWN_OVERTURN_CNT/T.CUST_CNT END AS DOWN_OVERTURN_RATIO\, - CASE WHEN ONE_LVL_CNT = 0 THEN 0 ELSE ONE_LVL_CNT/T.CUST_CNT END AS ONE_LVL_RATIO\, - CASE WHEN TWO_LVL_CNT = 0 THEN 0 ELSE TWO_LVL_CNT/T.CUST_CNT END AS TWO_LVL_RATIO\, - CASE WHEN THREE_LVL_CNT = 0 THEN 0 ELSE THREE_LVL_CNT/T.CUST_CNT END AS THREE_LVL_RATIO\, - CASE WHEN THREE_MORE_LVL_CNT = 0 THEN 0 ELSE THREE_MORE_LVL_CNT/T.CUST_CNT END AS THREE_MORE_LVL_RATIO + ROUND(CASE WHEN T.OVERTURN_CNT = 0 THEN 0 ELSE T.OVERTURN_CNT/T.CUST_CNT END\,4) AS OVERTURN_RATIO\, + ROUND(CASE WHEN UP_OVERTURN_CNT = 0 THEN 0 ELSE UP_OVERTURN_CNT/T.CUST_CNT END\,4) AS UP_OVERTURN_RATIO\, + ROUND(CASE WHEN DOWN_OVERTURN_CNT = 0 THEN 0 ELSE DOWN_OVERTURN_CNT/T.CUST_CNT END\,4) AS DOWN_OVERTURN_RATIO\, + ROUND(CASE WHEN ONE_LVL_CNT = 0 THEN 0 ELSE ONE_LVL_CNT/T.CUST_CNT END\,4) AS ONE_LVL_RATIO\, + ROUND(CASE WHEN TWO_LVL_CNT = 0 THEN 0 ELSE TWO_LVL_CNT/T.CUST_CNT END\,4) AS TWO_LVL_RATIO\, + ROUND(CASE WHEN THREE_LVL_CNT = 0 THEN 0 ELSE THREE_LVL_CNT/T.CUST_CNT END\,4) AS THREE_LVL_RATIO\, + ROUND(CASE WHEN THREE_MORE_LVL_CNT = 0 THEN 0 ELSE THREE_MORE_LVL_CNT/T.CUST_CNT END\,4) AS THREE_MORE_LVL_RATIO FROM ( - SELECT + SELECT V.EFFECTIVE_MONTH\, - COUNT(V.CUST_NO) AS CUST_CNT\, + CAST(COUNT(V.CUST_NO) AS DECIMAL) AS CUST_CNT\, SUM(CASE WHEN V.ORIGINAL_LEVEL <> V.INIT_LEVEL THEN 1 ELSE 0 END) AS OVERTURN_CNT\, SUM(CASE WHEN V.ORDER_NUM > V.INIT_ORDER_NUM THEN 1 ELSE 0 END) AS UP_OVERTURN_CNT\, SUM(CASE WHEN V.ORDER_NUM < V.INIT_ORDER_NUM THEN 1 ELSE 0 END) AS DOWN_OVERTURN_CNT\, @@ -916,58 +1031,15 @@ FROM ( AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE' GROUP BY V.EFFECTIVE_MONTH ) T ORDER BY T.EFFECTIVE_MONTH",,,,,, -"12","rptRatingDistribution","客户评级分布报表","DM DBMS","WITH A AS ( - SELECT - T.ORIGINAL_LEVEL AS FINAL_LEVEL - \,T.ORDER_NUM - \,COUNT(1) AS CUST_CNT - \,SUM(IFNULL(T.BORR_BAL\,0)) AS BORR_BAL - \,SUM(CASE WHEN T.EFFECTIVE_MONTH = CAST( DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) THEN 1 ELSE 0 END) AS CURR_INCT_CNT - \,SUM(CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END) AS DEF_CUST_CNT - FROM ( - SELECT - V.CUST_NO\, - V.ORIGINAL_LEVEL\, - V.ORDER_NUM\, - V.FINAL_LEVEL\, - V.BORR_BAL\, - V.EFFECTIVE_MONTH - FROM VIEW_RPT_BASE_INFO V - WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME - AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) - AND V.MODEL_CODE = '#MODEL_CODE' - AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE' - ) T GROUP BY T.ORIGINAL_LEVEL\, T.ORDER_NUM -)\, -B AS ( - SELECT - CAST(SUM(CUST_CNT) AS DECIMAL) AS TOTAL_CUST_CNT - \,CAST(SUM(BORR_BAL) AS DECIMAL) AS TOTAL_BORR_BAL - \,CAST(SUM(CURR_INCT_CNT) AS DECIMAL) AS TOTAL_CURR_INCT_CNT - \,CAST(SUM(DEF_CUST_CNT) AS DECIMAL) AS TOTAL_DEF_CUST_CNT - FROM A -) -SELECT - A.FINAL_LEVEL\, - A.CUST_CNT\, - ROUND(CASE WHEN A.CUST_CNT = 0 THEN 0 ELSE A.CUST_CNT / B.TOTAL_CUST_CNT END,4) AS CUST_RATIO\, - A.BORR_BAL\, - ROUND(CASE WHEN A.BORR_BAL = 0 THEN 0 ELSE A.BORR_BAL / B.TOTAL_BORR_BAL END,4) AS BORR_BAL_RATIO\, - A.CURR_INCT_CNT\, - ROUND(CASE WHEN A.CURR_INCT_CNT = 0 THEN 0 ELSE A.CURR_INCT_CNT / B.TOTAL_CURR_INCT_CNT END,4) AS CURR_INCT_RATIO\, - A.DEF_CUST_CNT\, - ROUND(CASE WHEN A.DEF_CUST_CNT = 0 THEN 0 ELSE A.DEF_CUST_CNT / B.TOTAL_DEF_CUST_CNT END,4) AS DEF_CUST_RATIO -FROM A LEFT JOIN B ON 1 = 1 -ORDER BY A.ORDER_NUM",,,,,, "21","rptRatingAdjust","客户评级特例调整情况报表","DM DBMS","SELECT T.EFFECTIVE_MONTH\, T.CUST_CNT\, T.ADJ_CNT\, - ROUND(CASE WHEN T.ADJ_CNT = 0 THEN 0 ELSE T.ADJ_CNT/T.CUST_CNT END,4) AS ADJ_RATIO\, - ROUND(CASE WHEN ONE_LVL_CNT = 0 THEN 0 ELSE ONE_LVL_CNT/T.CUST_CNT END,4) AS ONE_LVL_RATIO\, - ROUND(CASE WHEN TWO_LVL_CNT = 0 THEN 0 ELSE TWO_LVL_CNT/T.CUST_CNT END,4) AS TWO_LVL_RATIO\, - ROUND(CASE WHEN THREE_LVL_CNT = 0 THEN 0 ELSE THREE_LVL_CNT/T.CUST_CNT END,4) AS THREE_LVL_RATIO\, - ROUND(CASE WHEN THREE_MORE_LVL_CNT = 0 THEN 0 ELSE THREE_MORE_LVL_CNT/T.CUST_CNT END,4) AS THREE_MORE_LVL_RATIO + ROUND(CASE WHEN T.ADJ_CNT = 0 THEN 0 ELSE T.ADJ_CNT/T.CUST_CNT END\,4) AS ADJ_RATIO\, + ROUND(CASE WHEN ONE_LVL_CNT = 0 THEN 0 ELSE ONE_LVL_CNT/T.CUST_CNT END\,4) AS ONE_LVL_RATIO\, + ROUND(CASE WHEN TWO_LVL_CNT = 0 THEN 0 ELSE TWO_LVL_CNT/T.CUST_CNT END\,4) AS TWO_LVL_RATIO\, + ROUND(CASE WHEN THREE_LVL_CNT = 0 THEN 0 ELSE THREE_LVL_CNT/T.CUST_CNT END\,4) AS THREE_LVL_RATIO\, + ROUND(CASE WHEN THREE_MORE_LVL_CNT = 0 THEN 0 ELSE THREE_MORE_LVL_CNT/T.CUST_CNT END\,4) AS THREE_MORE_LVL_RATIO FROM ( SELECT V.EFFECTIVE_MONTH\, @@ -1063,91 +1135,167 @@ SELECT ELSE '高度' END AS RISK_LEVEL\, C.NORMAL_CNT\,C.DEF_CNT\,C.CUST_CNT FROM B LEFT JOIN C ON C.EFFECTIVE_Y = B.EFFECTIVE_Y",,,,,, -"13","rptRatingModelFocusDist","客户评级模型敞口集中度分布报表","DM DBMS","WITH A AS ( - SELECT - T.MODEL_CODE\, - T.MODEL_NAME\, - SUM( CASE WHEN T.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'C' THEN 1 ELSE 0 END ) AS C_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT - FROM ( - SELECT - V.FINAL_LEVEL\, - V.MODEL_CODE\, - V.MODEL_NAME - FROM VIEW_RPT_BASE_INFO V - WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME - AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) - AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE' - ) T GROUP BY T.MODEL_CODE\, T.MODEL_NAME -)\, -B AS ( - SELECT - CAST(COUNT(CUST_NO) AS DECIMAL) AS TOTAL_CUST_CNT - FROM VIEW_RPT_BASE_INFO V - WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME - AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) - AND V.MANAGER_ORG_CODE = '#MANAGER_ORG_CODE' -) +"23","insertDefaultAutoData","插入自动违约认定基础数据","MYSQL","insert into P_IRS_DEFAULT_AUTO_DEBT +select + uuid() + \,b.data_dt + \,b.DEBENTURE_NO + \,b.CUST_NO + \,b.CUST_CNA + \,c.CUST_TYPE_CD + \,b.PRD_CD + \,b.PRD_CD_DESC + \,b.BORR_START_DT + \,b.BORR_MATURE_DT + \,b.BORR_BAL + \,b.IN_OWEINT_BAL + \,b.OFF_OWEINT_BAL + \,b.PRIN_OVER_DAYS + \,b.BORR_OVERDUE_BAL + \,b.INT_OVER_DAYS + \,0 + \,b.TEN_CLASS_CD + \,b.STOP_INT_FLAG + \,case when b.BUSI_STATUS_CD = '01' then '1' else '0' end as CLOSE_FLAG + \,b.CANCEL_FLAG + \,b.EXTEND_NUM + \,b.BOR_REPAY_CNT + \,0 + \,case when b.OFF_OWEINT_BAL > 0 then '1' else '0' end as INTEREST_OUTTAB_FLAG + \,c.MGER_NO + \,c.MGER_CNA + \,c.MGER_ORG_NM + \,'IMPORT' + \,'SYSTEM' + \,NULL + \,'SYSTEM' + \,NULL + \,'_PRIMARY_' +from irbs_loan_borr_info b +left join irbs_cust_cp_info c + on b.CUST_NO = c.CUST_NO + and b.DATA_DT = c.DATA_DT +where b.DATA_DT = '#DATA_DT'",,,,,, +"24","insertDefaultAutoData","插入自动违约认定基础数据","DM DBMS","insert into P_IRS_DEFAULT_AUTO_DEBT +select + SYS_GUID() + \,b.data_dt + \,b.DEBENTURE_NO + \,b.CUST_NO + \,b.CUST_CNA + \,c.CUST_TYPE_CD + \,b.PRD_CD + \,b.PRD_CD_DESC + \,b.BORR_START_DT + \,b.BORR_MATURE_DT + \,b.BORR_BAL + \,b.IN_OWEINT_BAL + \,b.OFF_OWEINT_BAL + \,b.PRIN_OVER_DAYS + \,b.BORR_OVERDUE_BAL + \,b.INT_OVER_DAYS + \,0 + \,b.TEN_CLASS_CD + \,b.STOP_INT_FLAG + \,case when b.BUSI_STATUS_CD = '01' then '1' else '0' end as CLOSE_FLAG + \,b.CANCEL_FLAG + \,b.EXTEND_NUM + \,b.BOR_REPAY_CNT + \,0 + \,case when b.OFF_OWEINT_BAL > 0 then '1' else '0' end as INTEREST_OUTTAB_FLAG + \,c.MGER_NO + \,c.MGER_CNA + \,c.MGER_ORG_NM + \,'IMPORT' + \,'SYSTEM' + \,NULL + \,'SYSTEM' + \,NULL + \,'_PRIMARY_' +from irbs_loan_borr_info b +left join irbs_cust_cp_info c + on b.CUST_NO = c.CUST_NO + and b.DATA_DT = c.DATA_DT +where b.DATA_DT = '#DATA_DT'",,,,,, +"25","insertRiskExposureAutoData","插入自动风险暴露分类基础数据","MYSQL","insert into P_IRS_RISK_EXPOSURE_DEBT SELECT - A.MODEL_NAME\, - A.AAA_CNT\, - ROUND(CASE WHEN A.AAA_CNT=0 THEN 0 ELSE A.AAA_CNT/B.TOTAL_CUST_CNT END,4) AS AAA_RATIO\, - A.AA_CNT\, - ROUND(CASE WHEN A.AA_CNT=0 THEN 0 ELSE A.AA_CNT/B.TOTAL_CUST_CNT END,4) AS AA_RATIO\, - A.A_PLUS_CNT\, - ROUND(CASE WHEN A.A_PLUS_CNT=0 THEN 0 ELSE A.A_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS A_PLUS_RATIO\, - A.A_CNT\, - ROUND(CASE WHEN A.A_CNT=0 THEN 0 ELSE A.A_CNT/B.TOTAL_CUST_CNT END,4) AS A_RATIO\, - A.A_MINUS_CNT\, - ROUND(CASE WHEN A.A_MINUS_CNT=0 THEN 0 ELSE A.A_MINUS_CNT/B.TOTAL_CUST_CNT END,4) AS A_MINUS_RATIO\, - A.BBB_CNT\, - ROUND(CASE WHEN A.BBB_CNT=0 THEN 0 ELSE A.BBB_CNT/B.TOTAL_CUST_CNT END,4) AS BBB_RATIO\, - A.BB_PLUS_CNT\, - ROUND(CASE WHEN A.BB_PLUS_CNT=0 THEN 0 ELSE A.BB_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS BB_PLUS_RATIO\, - A.BB_CNT\, - ROUND(CASE WHEN A.BB_CNT=0 THEN 0 ELSE A.BB_CNT/B.TOTAL_CUST_CNT END,4) AS BB_RATIO\, - A.BB_MINUS_CNT\, - ROUND(CASE WHEN A.BB_MINUS_CNT=0 THEN 0 ELSE A.BB_MINUS_CNT/B.TOTAL_CUST_CNT END,4) AS BB_MINUS_RATIO\, - A.B_PLUS_CNT\, - ROUND(CASE WHEN A.B_PLUS_CNT=0 THEN 0 ELSE A.B_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS B_PLUS_RATIO\, - A.B_CNT\, - ROUND(CASE WHEN A.B_CNT=0 THEN 0 ELSE A.B_CNT/B.TOTAL_CUST_CNT END,4) AS B_RATIO\, - A.CCC_CNT\, - ROUND(CASE WHEN A.CCC_CNT=0 THEN 0 ELSE A.CCC_CNT/B.TOTAL_CUST_CNT END,4) AS CCC_RATIO\, - A.CC_CNT\, - ROUND(CASE WHEN A.CC_CNT=0 THEN 0 ELSE A.CC_CNT/B.TOTAL_CUST_CNT END,4) AS CC_RATIO\, - A.C_CNT\, - ROUND(CASE WHEN A.C_CNT=0 THEN 0 ELSE A.C_CNT/B.TOTAL_CUST_CNT END,4) AS C_RATIO\, - A.D_CNT\, - ROUND(CASE WHEN A.D_CNT=0 THEN 0 ELSE A.D_CNT/B.TOTAL_CUST_CNT END,4) AS D_RATIO -FROM A LEFT JOIN B ON 1=1 -ORDER BY A.MODEL_CODE",,,,,, -"14","rptRatingOrgFocusDist","客户评级分支机构集中度分布报表","DM DBMS","WITH A AS ( + uuid() + \,b.DATA_DT + \,b.DEBENTURE_NO + \,b.CUST_NO + \,b.CUST_CNA + \,'CORP' + \,b.PRD_CD + \,b.PRD_CD_DESC + \,c.CORP_SIZE_CD + \,0 + \,b.MAJOR_LOAN_LIST_FLAG + \,'09' + \,0 + \,c.INDU_SORT_CD + \,0 + \,'0' + \,'0' + \,c.MGER_NO + \,c.MGER_CNA + \,c.MGER_ORG_NM + \,'IMPORT' + \,'SYSTEM' + \,NULL + \,'SYSTEM' + \,NULL + \,'_PRIMARY_' +FROM irbs_loan_borr_info b +left join irbs_cust_cp_info c + on b.CUST_NO = c.CUST_NO + and b.DATA_DT = c.DATA_DT +where b.DATA_DT = '#DATA_DT'",,,,,, +"26","insertRiskExposureAutoData","插入自动风险暴露分类基础数据","DM DBMS","insert into P_IRS_RISK_EXPOSURE_DEBT +SELECT + sys_guid() + \,b.DATA_DT + \,b.DEBENTURE_NO + \,b.CUST_NO + \,b.CUST_CNA + \,'CORP' + \,b.PRD_CD + \,b.PRD_CD_DESC + \,c.CORP_SIZE_CD + \,0 + \,b.MAJOR_LOAN_LIST_FLAG + \,'09' + \,0 + \,c.INDU_SORT_CD + \,0 + \,'0' + \,'0' + \,c.MGER_NO + \,c.MGER_CNA + \,c.MGER_ORG_NM + \,'IMPORT' + \,'SYSTEM' + \,NULL + \,'SYSTEM' + \,NULL + \,'_PRIMARY_' +FROM irbs_loan_borr_info b +left join irbs_cust_cp_info c + on b.CUST_NO = c.CUST_NO + and b.DATA_DT = c.DATA_DT +where b.DATA_DT = '#DATA_DT'",,,,,, +"3","rptRatingOrgFocusDist","客户评级分支机构集中度分布报表","MYSQL","WITH A AS ( SELECT T.MANAGER_ORG_CODE\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AAA+' THEN 1 ELSE 0 END ) AS AAA_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AA+' THEN 1 ELSE 0 END ) AS AA_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AA-' THEN 1 ELSE 0 END ) AS AA_MINUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\, @@ -1165,60 +1313,60 @@ ORDER BY A.MODEL_CODE",,,,,, )\, B AS ( SELECT - CAST(COUNT(CUST_NO) AS DECIMAL) AS TOTAL_CUST_CNT + COUNT(CUST_NO) AS TOTAL_CUST_CNT FROM VIEW_RPT_BASE_INFO V WHERE V.EFFECTIVE_TIME = V.MAX_EFFECTIVE_TIME AND V.EFFECTIVE_MONTH <= CAST(DATE_FORMAT('#EFFECTIVE_MONTH'\, '%Y%m') AS DECIMAL) AND V.MODEL_CODE = '#MODEL_CODE' ) SELECT - NVL(O.FD_NAME, A.MANAGER_ORG_CODE) AS MANAGER_ORG_NAME\, + NULLIF(O.FD_NAME\,A.MANAGER_ORG_CODE) AS MANAGER_ORG_NAME\, + A.AAA_PLUS_CNT\, + CASE WHEN A.AAA_PLUS_CNT=0 THEN 0 ELSE A.AAA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AAA_PLUS_RATIO\, A.AAA_CNT\, - ROUND(CASE WHEN A.AAA_CNT=0 THEN 0 ELSE A.AAA_CNT/B.TOTAL_CUST_CNT END,4) AS AAA_RATIO\, + CASE WHEN A.AAA_CNT=0 THEN 0 ELSE A.AAA_CNT/B.TOTAL_CUST_CNT END AS AAA_RATIO\, + A.AA_PLUS_CNT\, + CASE WHEN A.AA_PLUS_CNT=0 THEN 0 ELSE A.AA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AA_PLUS_RATIO\, A.AA_CNT\, - ROUND(CASE WHEN A.AA_CNT=0 THEN 0 ELSE A.AA_CNT/B.TOTAL_CUST_CNT END,4) AS AA_RATIO\, + CASE WHEN A.AA_CNT=0 THEN 0 ELSE A.AA_CNT/B.TOTAL_CUST_CNT END AS AA_RATIO\, + A.AA_MINUS_CNT\, + CASE WHEN A.AA_MINUS_CNT=0 THEN 0 ELSE A.AA_MINUS_CNT/B.TOTAL_CUST_CNT END AS AA_MINUS_RATIO\, A.A_PLUS_CNT\, - ROUND(CASE WHEN A.A_PLUS_CNT=0 THEN 0 ELSE A.A_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS A_PLUS_RATIO\, + CASE WHEN A.A_PLUS_CNT=0 THEN 0 ELSE A.A_PLUS_CNT/B.TOTAL_CUST_CNT END AS A_PLUS_RATIO\, A.A_CNT\, - ROUND(CASE WHEN A.A_CNT=0 THEN 0 ELSE A.A_CNT/B.TOTAL_CUST_CNT END,4) AS A_RATIO\, + CASE WHEN A.A_CNT=0 THEN 0 ELSE A.A_CNT/B.TOTAL_CUST_CNT END AS A_RATIO\, A.A_MINUS_CNT\, - ROUND(CASE WHEN A.A_MINUS_CNT=0 THEN 0 ELSE A.A_MINUS_CNT/B.TOTAL_CUST_CNT END,4) AS A_MINUS_RATIO\, + CASE WHEN A.A_MINUS_CNT=0 THEN 0 ELSE A.A_MINUS_CNT/B.TOTAL_CUST_CNT END AS A_MINUS_RATIO\, A.BBB_CNT\, - ROUND(CASE WHEN A.BBB_CNT=0 THEN 0 ELSE A.BBB_CNT/B.TOTAL_CUST_CNT END,4) AS BBB_RATIO\, - A.BB_PLUS_CNT\, - ROUND(CASE WHEN A.BB_PLUS_CNT=0 THEN 0 ELSE A.BB_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS BB_PLUS_RATIO\, + CASE WHEN A.BBB_CNT=0 THEN 0 ELSE A.BBB_CNT/B.TOTAL_CUST_CNT END AS BBB_RATIO\, A.BB_CNT\, - ROUND(CASE WHEN A.BB_CNT=0 THEN 0 ELSE A.BB_CNT/B.TOTAL_CUST_CNT END,4) AS BB_RATIO\, - A.BB_MINUS_CNT\, - ROUND(CASE WHEN A.BB_MINUS_CNT=0 THEN 0 ELSE A.BB_MINUS_CNT/B.TOTAL_CUST_CNT END,4) AS BB_MINUS_RATIO\, - A.B_PLUS_CNT\, - ROUND(CASE WHEN A.B_PLUS_CNT=0 THEN 0 ELSE A.B_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS B_PLUS_RATIO\, + CASE WHEN A.BB_CNT=0 THEN 0 ELSE A.BB_CNT/B.TOTAL_CUST_CNT END AS BB_RATIO\, A.B_CNT\, - ROUND(CASE WHEN A.B_CNT=0 THEN 0 ELSE A.B_CNT/B.TOTAL_CUST_CNT END,4) AS B_RATIO\, + CASE WHEN A.B_CNT=0 THEN 0 ELSE A.B_CNT/B.TOTAL_CUST_CNT END AS B_RATIO\, A.CCC_CNT\, - ROUND(CASE WHEN A.CCC_CNT=0 THEN 0 ELSE A.CCC_CNT/B.TOTAL_CUST_CNT END,4) AS CCC_RATIO\, + CASE WHEN A.CCC_CNT=0 THEN 0 ELSE A.CCC_CNT/B.TOTAL_CUST_CNT END AS CCC_RATIO\, A.CC_CNT\, - ROUND(CASE WHEN A.CC_CNT=0 THEN 0 ELSE A.CC_CNT/B.TOTAL_CUST_CNT END,4) AS CC_RATIO\, + CASE WHEN A.CC_CNT=0 THEN 0 ELSE A.CC_CNT/B.TOTAL_CUST_CNT END AS CC_RATIO\, A.C_CNT\, - ROUND(CASE WHEN A.C_CNT=0 THEN 0 ELSE A.C_CNT/B.TOTAL_CUST_CNT END,4) AS C_RATIO\, + CASE WHEN A.C_CNT=0 THEN 0 ELSE A.C_CNT/B.TOTAL_CUST_CNT END AS C_RATIO\, A.D_CNT\, - ROUND(CASE WHEN A.D_CNT=0 THEN 0 ELSE A.D_CNT/B.TOTAL_CUST_CNT END,4) AS D_RATIO + CASE WHEN A.D_CNT=0 THEN 0 ELSE A.D_CNT/B.TOTAL_CUST_CNT END AS D_RATIO FROM A LEFT JOIN B ON 1=1 LEFT JOIN FR_AA_ORG O ON O.FD_CODE = A.MANAGER_ORG_CODE ORDER BY A.MANAGER_ORG_CODE",,,,,, -"15","rptRatingIndustryFocusDist","客户评级行业集中度分布报表","DM DBMS","WITH A AS ( +"4","rptRatingIndustryFocusDist","客户评级行业集中度分布报表","MYSQL","WITH A AS ( SELECT T.INDUSTRY_CODE\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AAA+' THEN 1 ELSE 0 END ) AS AAA_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AA+' THEN 1 ELSE 0 END ) AS AA_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\, + SUM( CASE WHEN T.FINAL_LEVEL = 'AA-' THEN 1 ELSE 0 END ) AS AA_MINUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\, - SUM( CASE WHEN T.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\, SUM( CASE WHEN T.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\, @@ -1246,36 +1394,36 @@ B AS ( ) SELECT I.INDUSTRY_NAME\, + A.AAA_PLUS_CNT\, + CASE WHEN A.AAA_PLUS_CNT=0 THEN 0 ELSE A.AAA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AAA_PLUS_RATIO\, A.AAA_CNT\, - ROUND(CASE WHEN A.AAA_CNT=0 THEN 0 ELSE A.AAA_CNT/B.TOTAL_CUST_CNT END,4) AS AAA_RATIO\, + CASE WHEN A.AAA_CNT=0 THEN 0 ELSE A.AAA_CNT/B.TOTAL_CUST_CNT END AS AAA_RATIO\, + A.AA_PLUS_CNT\, + CASE WHEN A.AA_PLUS_CNT=0 THEN 0 ELSE A.AA_PLUS_CNT/B.TOTAL_CUST_CNT END AS AA_PLUS_RATIO\, A.AA_CNT\, - ROUND(CASE WHEN A.AA_CNT=0 THEN 0 ELSE A.AA_CNT/B.TOTAL_CUST_CNT END,4) AS AA_RATIO\, + CASE WHEN A.AA_CNT=0 THEN 0 ELSE A.AA_CNT/B.TOTAL_CUST_CNT END AS AA_RATIO\, + A.AA_MINUS_CNT\, + CASE WHEN A.AA_MINUS_CNT=0 THEN 0 ELSE A.AA_MINUS_CNT/B.TOTAL_CUST_CNT END AS AA_MINUS_RATIO\, A.A_PLUS_CNT\, - ROUND(CASE WHEN A.A_PLUS_CNT=0 THEN 0 ELSE A.A_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS A_PLUS_RATIO\, + CASE WHEN A.A_PLUS_CNT=0 THEN 0 ELSE A.A_PLUS_CNT/B.TOTAL_CUST_CNT END AS A_PLUS_RATIO\, A.A_CNT\, - ROUND(CASE WHEN A.A_CNT=0 THEN 0 ELSE A.A_CNT/B.TOTAL_CUST_CNT END,4) AS A_RATIO\, + CASE WHEN A.A_CNT=0 THEN 0 ELSE A.A_CNT/B.TOTAL_CUST_CNT END AS A_RATIO\, A.A_MINUS_CNT\, - ROUND(CASE WHEN A.A_MINUS_CNT=0 THEN 0 ELSE A.A_MINUS_CNT/B.TOTAL_CUST_CNT END,4) AS A_MINUS_RATIO\, + CASE WHEN A.A_MINUS_CNT=0 THEN 0 ELSE A.A_MINUS_CNT/B.TOTAL_CUST_CNT END AS A_MINUS_RATIO\, A.BBB_CNT\, - ROUND(CASE WHEN A.BBB_CNT=0 THEN 0 ELSE A.BBB_CNT/B.TOTAL_CUST_CNT END,4) AS BBB_RATIO\, - A.BB_PLUS_CNT\, - ROUND(CASE WHEN A.BB_PLUS_CNT=0 THEN 0 ELSE A.BB_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS BB_PLUS_RATIO\, + CASE WHEN A.BBB_CNT=0 THEN 0 ELSE A.BBB_CNT/B.TOTAL_CUST_CNT END AS BBB_RATIO\, A.BB_CNT\, - ROUND(CASE WHEN A.BB_CNT=0 THEN 0 ELSE A.BB_CNT/B.TOTAL_CUST_CNT END,4) AS BB_RATIO\, - A.BB_MINUS_CNT\, - ROUND(CASE WHEN A.BB_MINUS_CNT=0 THEN 0 ELSE A.BB_MINUS_CNT/B.TOTAL_CUST_CNT END,4) AS BB_MINUS_RATIO\, - A.B_PLUS_CNT\, - ROUND(CASE WHEN A.B_PLUS_CNT=0 THEN 0 ELSE A.B_PLUS_CNT/B.TOTAL_CUST_CNT END,4) AS B_PLUS_RATIO\, + CASE WHEN A.BB_CNT=0 THEN 0 ELSE A.BB_CNT/B.TOTAL_CUST_CNT END AS BB_RATIO\, A.B_CNT\, - ROUND(CASE WHEN A.B_CNT=0 THEN 0 ELSE A.B_CNT/B.TOTAL_CUST_CNT END,4) AS B_RATIO\, + CASE WHEN A.B_CNT=0 THEN 0 ELSE A.B_CNT/B.TOTAL_CUST_CNT END AS B_RATIO\, A.CCC_CNT\, - ROUND(CASE WHEN A.CCC_CNT=0 THEN 0 ELSE A.CCC_CNT/B.TOTAL_CUST_CNT END,4) AS CCC_RATIO\, + CASE WHEN A.CCC_CNT=0 THEN 0 ELSE A.CCC_CNT/B.TOTAL_CUST_CNT END AS CCC_RATIO\, A.CC_CNT\, - ROUND(CASE WHEN A.CC_CNT=0 THEN 0 ELSE A.CC_CNT/B.TOTAL_CUST_CNT END,4) AS CC_RATIO\, + CASE WHEN A.CC_CNT=0 THEN 0 ELSE A.CC_CNT/B.TOTAL_CUST_CNT END AS CC_RATIO\, A.C_CNT\, - ROUND(CASE WHEN A.C_CNT=0 THEN 0 ELSE A.C_CNT/B.TOTAL_CUST_CNT END,4) AS C_RATIO\, + CASE WHEN A.C_CNT=0 THEN 0 ELSE A.C_CNT/B.TOTAL_CUST_CNT END AS C_RATIO\, A.D_CNT\, - ROUND(CASE WHEN A.D_CNT=0 THEN 0 ELSE A.D_CNT/B.TOTAL_CUST_CNT END,4) AS D_RATIO + CASE WHEN A.D_CNT=0 THEN 0 ELSE A.D_CNT/B.TOTAL_CUST_CNT END AS D_RATIO FROM A LEFT JOIN B ON 1=1 LEFT JOIN ( SELECT @@ -1364,7 +1512,7 @@ LEFT JOIN ( 21 AS ORDER_NUM ) I ON I.INDUSTRY_CODE = A.INDUSTRY_CODE ORDER BY I.ORDER_NUM",,,,,, -"16","rptRatingNumberMigrate","客户评级迁移报表(客户数)","DM DBMS","WITH CURR AS ( +"5","rptRatingNumberMigrate","客户评级迁移报表(客户数)","MYSQL","WITH CURR AS ( SELECT R.CUST_NO\, R.FINAL_LEVEL\, @@ -1374,12 +1522,12 @@ ORDER BY I.ORDER_NUM",,,,,, FROM VIEW_RPT_BASE_INFO R WHERE R.EFFECTIVE_TIME = R.MAX_EFFECTIVE_TIME - AND R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -12 )\, '%Y%m' ) AS DECIMAL ) + AND R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, '%Y%m' ) AS DECIMAL ) AND CAST(DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' ) AS DECIMAL) AND R.MODEL_CODE='#MODEL_CODE' AND R.MANAGER_ORG_CODE='#MANAGER_ORG_CODE' )\, -LAST_R AS ( +LAST AS ( SELECT R.CUST_NO\, R.FINAL_LEVEL\, @@ -1387,24 +1535,24 @@ LAST_R AS ( R.EFFECTIVE_MONTH\, R.RATING_STATUS FROM VIEW_RPT_BASE_INFO R - WHERE R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -24 )\, '%Y%m' ) AS DECIMAL) - AND CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -13 )\, '%Y%m' ) AS DECIMAL) + WHERE R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 2 YEAR )\, '%Y%m' ) AS DECIMAL) + AND CAST(DATE_FORMAT( DATE_ADD( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, INTERVAL - 1 MONTH )\, '%Y%m' ) AS DECIMAL) AND R.MODEL_CODE='#MODEL_CODE' AND R.MANAGER_ORG_CODE='#MANAGER_ORG_CODE' )\, -NEW_R AS ( +NEW AS ( SELECT '新增客户' AS FINAL_LEVEL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA+' THEN 1 ELSE 0 END ) AS AAA_PLUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA+' THEN 1 ELSE 0 END ) AS AA_PLUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA-' THEN 1 ELSE 0 END ) AS AA_MINUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\, @@ -1412,20 +1560,20 @@ NEW_R AS ( SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT\, 0 AS NOT_RATING_CNT\,0 AS UP_CNT\,0 AS DOWN_CNT\,0 AS UP_RATIO\, 0 AS DOWN_RATIO\,0 AS CHG_EXPONENT - FROM CURR WHERE NOT EXISTS ( SELECT 1 FROM LAST_R WHERE LAST_R.CUST_NO = CURR.CUST_NO ) + FROM CURR WHERE NOT EXISTS ( SELECT 1 FROM LAST WHERE LAST.CUST_NO = CURR.CUST_NO ) )\, NR AS ( SELECT - LAST_R.FINAL_LEVEL\, - CAST(COUNT( 1 ) AS DECIMAL) AS NOT_RATING_CNT - FROM LAST_R - WHERE NOT EXISTS ( SELECT 1 FROM CURR WHERE CURR.CUST_NO = LAST_R.CUST_NO ) - GROUP BY LAST_R.FINAL_LEVEL + LAST.FINAL_LEVEL\, + COUNT( 1 ) AS NOT_RATING_CNT + FROM LAST + WHERE NOT EXISTS ( SELECT 1 FROM CURR WHERE CURR.CUST_NO = LAST.CUST_NO ) + GROUP BY LAST.FINAL_LEVEL )\, CHG AS ( SELECT - CAST(SUM( CASE WHEN CURR.FINAL_LEVEL <> LAST_R.FINAL_LEVEL THEN 1 ELSE 0 END ) AS DECIMAL) AS CHG_CNT - FROM CURR LEFT JOIN LAST_R ON LAST_R.CUST_NO = CURR.CUST_NO + SUM( CASE WHEN CURR.FINAL_LEVEL <> LAST.FINAL_LEVEL THEN 1 ELSE 0 END ) AS CHG_CNT + FROM CURR LEFT JOIN LAST ON LAST.CUST_NO = CURR.CUST_NO ) @@ -1436,46 +1584,46 @@ FROM ( SELECT S.SCALE_LEVEL AS FINAL_LEVEL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA+' THEN 1 ELSE 0 END ) AS AAA_PLUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN 1 ELSE 0 END ) AS AAA_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA+' THEN 1 ELSE 0 END ) AS AA_PLUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN 1 ELSE 0 END ) AS AA_CNT\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA-' THEN 1 ELSE 0 END ) AS AA_MINUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN 1 ELSE 0 END ) AS A_PLUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN 1 ELSE 0 END ) AS A_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN 1 ELSE 0 END ) AS A_MINUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN 1 ELSE 0 END ) AS BBB_CNT\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB+' THEN 1 ELSE 0 END ) AS BB_PLUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN 1 ELSE 0 END ) AS BB_CNT\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB-' THEN 1 ELSE 0 END ) AS BB_MINUS_CNT\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'B+' THEN 1 ELSE 0 END ) AS B_PLUS_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN 1 ELSE 0 END ) AS B_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN 1 ELSE 0 END ) AS CCC_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN 1 ELSE 0 END ) AS CC_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'C' THEN 1 ELSE 0 END ) AS C_CNT\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN 1 ELSE 0 END ) AS D_CNT\, IFNULL( NR.NOT_RATING_CNT\, 0 ) AS NOT_RATING_CNT\, - SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN 1 ELSE 0 END ) AS UP_CNT\, - SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN 1 ELSE 0 END ) AS DOWN_CNT\, + SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN 1 ELSE 0 END ) AS UP_CNT\, + SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN 1 ELSE 0 END ) AS DOWN_CNT\, CASE WHEN CHG.CHG_CNT = 0 THEN 0 - ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT + ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT END AS UP_RATIO\, CASE WHEN CHG.CHG_CNT = 0 THEN 0 - ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT + ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT END AS DOWN_RATIO\,( CASE WHEN CHG.CHG_CNT = 0 THEN - 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT + 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT END )-( CASE WHEN CHG.CHG_CNT = 0 THEN - 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT + 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN 1 ELSE 0 END )/ CHG.CHG_CNT END ) AS CHG_EXPONENT FROM NS_CFG_MAIN_SCALE S - LEFT JOIN LAST_R ON LAST_R.FINAL_LEVEL = S.SCALE_LEVEL - LEFT JOIN CURR ON CURR.CUST_NO = LAST_R.CUST_NO + LEFT JOIN LAST ON LAST.FINAL_LEVEL = S.SCALE_LEVEL + LEFT JOIN CURR ON CURR.CUST_NO = LAST.CUST_NO LEFT JOIN NR ON NR.FINAL_LEVEL = S.SCALE_LEVEL LEFT JOIN CHG ON 1 = 1 GROUP BY @@ -1489,8 +1637,8 @@ FROM SELECT * FROM - NEW_R",,,,,, -"17","rptRatingLoanBalanceMigrate","客户评级迁移报表(信贷余额)","DM DBMS","WITH CURR AS ( + NEW",,,,,, +"6","rptRatingLoanBalanceMigrate","客户评级迁移报表(信贷余额)","MYSQL","WITH CURR AS ( SELECT R.CUST_NO\, R.FINAL_LEVEL\, @@ -1501,12 +1649,12 @@ FROM FROM VIEW_RPT_BASE_INFO R WHERE R.EFFECTIVE_TIME = R.MAX_EFFECTIVE_TIME - AND R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -12 )\, '%Y%m' ) AS DECIMAL ) + AND R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, '%Y%m' ) AS DECIMAL ) AND CAST(DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' ) AS DECIMAL) AND R.MODEL_CODE='#MODEL_CODE' AND R.MANAGER_ORG_CODE='#MANAGER_ORG_CODE' )\, -LAST_R AS ( +LAST AS ( SELECT R.CUST_NO\, R.FINAL_LEVEL\, @@ -1515,24 +1663,24 @@ LAST_R AS ( R.RATING_STATUS\, R.BORR_BAL FROM VIEW_RPT_BASE_INFO R - WHERE R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -24 )\, '%Y%m' ) AS DECIMAL) - AND CAST(DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -13 )\, '%Y%m' ) AS DECIMAL) + WHERE R.EFFECTIVE_MONTH BETWEEN CAST(DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 2 YEAR )\, '%Y%m' ) AS DECIMAL) + AND CAST(DATE_FORMAT( DATE_ADD( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, INTERVAL - 1 MONTH )\, '%Y%m' ) AS DECIMAL) AND R.MODEL_CODE='#MODEL_CODE' AND R.MANAGER_ORG_CODE='#MANAGER_ORG_CODE' )\, -NEW_R AS ( +NEW AS ( SELECT '新增客户' AS FINAL_LEVEL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AAA_PLUS_BAL\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AAA_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_PLUS_BAL\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_MINUS_BAL\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_PLUS_BAL\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_BAL\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_MINUS_BAL\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BBB_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_PLUS_BAL\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_MINUS_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'B+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_PLUS_BAL\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_BAL\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CCC_BAL\, SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CC_BAL\, @@ -1540,57 +1688,57 @@ NEW_R AS ( SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS D_BAL\, 0 AS NOT_RATING_BAL\,0 AS UP_BAL\,0 AS DOWN_BAL\,0 AS UP_RATIO\,0 AS DOWN_RATIO\,0 AS CHG_EXPONENT FROM CURR - WHERE NOT EXISTS ( SELECT 1 FROM LAST_R WHERE LAST_R.CUST_NO = CURR.CUST_NO ) + WHERE NOT EXISTS ( SELECT 1 FROM LAST WHERE LAST.CUST_NO = CURR.CUST_NO ) )\, NR AS ( SELECT - LAST_R.FINAL_LEVEL\,SUM(IFNULL( LAST_R.BORR_BAL\, 0 )) AS NOT_RATING_BAL - FROM LAST_R - WHERE NOT EXISTS ( SELECT 1 FROM CURR WHERE CURR.CUST_NO = LAST_R.CUST_NO ) - GROUP BY LAST_R.FINAL_LEVEL + LAST.FINAL_LEVEL\,SUM(IFNULL( LAST.BORR_BAL\, 0 )) AS NOT_RATING_BAL + FROM LAST + WHERE NOT EXISTS ( SELECT 1 FROM CURR WHERE CURR.CUST_NO = LAST.CUST_NO ) + GROUP BY LAST.FINAL_LEVEL )\, CHG AS ( SELECT - SUM( CASE WHEN CURR.FINAL_LEVEL <> LAST_R.FINAL_LEVEL THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CHG_BAL - FROM CURR LEFT JOIN LAST_R ON LAST_R.CUST_NO = CURR.CUST_NO + SUM( CASE WHEN CURR.FINAL_LEVEL <> LAST.FINAL_LEVEL THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CHG_BAL + FROM CURR LEFT JOIN LAST ON LAST.CUST_NO = CURR.CUST_NO ) SELECT * FROM ( SELECT S.SCALE_LEVEL AS FINAL_LEVEL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AAA_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_PLUS_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_MINUS_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BBB_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_PLUS_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_MINUS_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'B+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_PLUS_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CCC_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CC_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'C' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS C_BAL\, - SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS D_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AAA_PLUS_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AAA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AAA_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_PLUS_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'AA-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS AA_MINUS_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'A+' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_PLUS_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'A' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'A-' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS A_MINUS_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'BBB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BBB_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'BB' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS BB_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'B' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS B_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'CCC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CCC_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'CC' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS CC_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'C' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS C_BAL\, + SUM( CASE WHEN CURR.FINAL_LEVEL = 'D' THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS D_BAL\, NR.NOT_RATING_BAL\, - SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS UP_BAL\, - SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS DOWN_BAL\, - CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL + SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS UP_BAL\, + SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END ) AS DOWN_BAL\, + CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL END AS UP_RATIO\, - CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL + CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL END AS DOWN_RATIO\,( - CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL - END)-(CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST_R.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL END ) AS CHG_EXPONENT + CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM < LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL + END)-(CASE WHEN CHG.CHG_BAL = 0 THEN 0 ELSE SUM( CASE WHEN CURR.ORDER_NUM > LAST.ORDER_NUM THEN IFNULL( CURR.BORR_BAL\, 0 ) ELSE 0 END )/ CHG.CHG_BAL END ) AS CHG_EXPONENT FROM NS_CFG_MAIN_SCALE S - LEFT JOIN LAST_R ON LAST_R.FINAL_LEVEL = S.SCALE_LEVEL - LEFT JOIN CURR ON CURR.CUST_NO = LAST_R.CUST_NO + LEFT JOIN LAST ON LAST.FINAL_LEVEL = S.SCALE_LEVEL + LEFT JOIN CURR ON CURR.CUST_NO = LAST.CUST_NO LEFT JOIN NR ON NR.FINAL_LEVEL = S.SCALE_LEVEL LEFT JOIN CHG ON 1 = 1 GROUP BY S.SCALE_LEVEL\,S.ORDER_NUM\,NOT_RATING_BAL\,CHG.CHG_BAL ORDER BY S.ORDER_NUM ) A UNION -SELECT * FROM NEW_R",,,,,, -"18","rptModelMonitorDiff","模型区分能力监控报表","DM DBMS","WITH A AS ( +SELECT * FROM NEW",,,,,, +"7","rptModelMonitorDiff","模型区分能力监控报表","MYSQL","WITH A AS ( SELECT 0 AS DOWN\, 10 AS UP\, 1 AS SCORE_AREA UNION SELECT 10 AS DOWN\, 20 AS UP\, 2 AS SCORE_AREA UNION SELECT 20 AS DOWN\, 30 AS UP\, 3 AS SCORE_AREA UNION @@ -1612,7 +1760,7 @@ B AS ( FROM VIEW_RPT_BASE_INFO V\, A WHERE V.MODEL_SCORE > A.DOWN AND V.MODEL_SCORE <= A.UP - AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -12 )\, '%Y%m' ) + AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL -#YEAR_PERIOD YEAR )\, '%Y%m' ) AND DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' ) AND V.MODEL_CODE='#MODEL_CODE' GROUP BY V.EFFECTIVE_Q\,A.SCORE_AREA @@ -1621,9 +1769,9 @@ C AS ( SELECT DISTINCT B.EFFECTIVE_Q\, B.SCORE_AREA\, - CAST(SUM( CUST_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q )AS DECIMAL) AS TOT_CUST_CNT\, - CAST(SUM( B.GOOD_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q ) AS DECIMAL) AS TOT_GOOD_CNT\, - CAST(SUM( B.BAD_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q ) AS DECIMAL) AS TOT_BAD_CNT + SUM( CUST_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q ) AS TOT_CUST_CNT\, + SUM( B.GOOD_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q ) AS TOT_GOOD_CNT\, + SUM( B.BAD_CNT ) OVER ( PARTITION BY B.EFFECTIVE_Q ) AS TOT_BAD_CNT FROM B )\, D AS ( @@ -1686,9 +1834,9 @@ KS AS ( SELECT D.EFFECTIVE_Q\, D.SCORE_AREA\, - CASE WHEN C.TOT_GOOD_CNT=0 THEN 0 ELSE D.GOOD_CNT / C.TOT_GOOD_CNT END AS GOOD_RATIO\, - CASE WHEN C.TOT_BAD_CNT=0 THEN 0 ELSE D.BAD_CNT / C.TOT_BAD_CNT END AS BAD_RATIO\, - ABS( (CASE WHEN C.TOT_GOOD_CNT=0 THEN 0 ELSE D.GOOD_CNT / C.TOT_GOOD_CNT END) - (CASE WHEN C.TOT_BAD_CNT=0 THEN 0 ELSE D.BAD_CNT / C.TOT_BAD_CNT END) ) AS DIFF + D.GOOD_CNT / C.TOT_GOOD_CNT AS GOOD_RATIO\, + D.BAD_CNT / C.TOT_BAD_CNT AS BAD_RATIO\, + ABS( D.GOOD_CNT / C.TOT_GOOD_CNT - D.BAD_CNT / C.TOT_BAD_CNT ) AS DIFF FROM D LEFT JOIN C ON C.EFFECTIVE_Q = D.EFFECTIVE_Q AND C.SCORE_AREA = D.SCORE_AREA @@ -1703,9 +1851,9 @@ AR AS ( SELECT E.EFFECTIVE_Q\, E.SCORE_AREA\, - CASE WHEN C.TOT_CUST_CNT=0 THEN 0 ELSE E.CUST_CNT / C.TOT_CUST_CNT END AS CUST_RATIO\, - CASE WHEN C.TOT_BAD_CNT=0 THEN 0 ELSE E.BAD_CNT / C.TOT_BAD_CNT END AS BAD_RATIO\, - ((CASE WHEN C.TOT_BAD_CNT=0 THEN 0 ELSE E.BAD_CNT/C.TOT_BAD_CNT END)-E.CUST_CNT/C.TOT_CUST_CNT)/2*1/CC.TOT_CUST_CNT AS DIFF\, + E.CUST_CNT / C.TOT_CUST_CNT AS CUST_RATIO\, + E.BAD_CNT / C.TOT_BAD_CNT AS BAD_RATIO\, + (E.BAD_CNT/C.TOT_BAD_CNT-E.CUST_CNT/C.TOT_CUST_CNT)/2*1/CC.TOT_CUST_CNT AS DIFF\, (CC.TOT_CUST_CNT-CC.TOT_BAD_CNT)/CC.TOT_CUST_CNT AS NORMAL_RATIO FROM E LEFT JOIN C ON C.EFFECTIVE_Q = E.EFFECTIVE_Q AND C.SCORE_AREA = E.SCORE_AREA @@ -1728,7 +1876,7 @@ FROM KS INNER JOIN AR ON AR.EFFECTIVE_Q = KS.EFFECTIVE_Q LEFT JOIN (SELECT DISTINCT C.EFFECTIVE_Q\, C.TOT_CUST_CNT\, C.TOT_BAD_CNT\, C.TOT_CUST_CNT - C.TOT_BAD_CNT AS TOT_NORMAL_CNT FROM C ) CC ON CC.EFFECTIVE_Q = KS.EFFECTIVE_Q ORDER BY KS.EFFECTIVE_Q",,,,,, -"19","rptModelMonitorStable","模型稳定性监控报表","DM DBMS","WITH A AS ( +"8","rptModelMonitorStable","模型稳定性监控报表","MYSQL","WITH A AS ( SELECT 0 AS DOWN\, 10 AS UP\, 1 AS SCORE_AREA UNION SELECT 10 AS DOWN\, 20 AS UP\, 2 AS SCORE_AREA UNION SELECT 20 AS DOWN\, 30 AS UP\, 3 AS SCORE_AREA UNION @@ -1748,12 +1896,12 @@ B AS ( FROM VIEW_RPT_BASE_INFO V\,A WHERE V.MODEL_SCORE > A.DOWN AND V.MODEL_SCORE <= A.UP - AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -12 )\, '%Y%m' ) + AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, '%Y%m' ) AND DATE_FORMAT( '#EFFECTIVE_MONTH'\, '%Y%m' ) AND V.MODEL_CODE='#MODEL_CODE' )\, B1 AS ( SELECT EFFECTIVE_Q\, SCORE_AREA\, COUNT( 1 ) AS CUST_CNT FROM B GROUP BY EFFECTIVE_Q\, SCORE_AREA )\, -B2 AS ( SELECT EFFECTIVE_Q\, CAST(SUM( CUST_CNT ) AS DECIMAL) AS TOT_CUST_CNT FROM B1 GROUP BY EFFECTIVE_Q )\, +B2 AS ( SELECT EFFECTIVE_Q\, SUM( CUST_CNT ) AS TOT_CUST_CNT FROM B1 GROUP BY EFFECTIVE_Q )\, B3 AS ( SELECT B1.EFFECTIVE_Q\, @@ -1769,12 +1917,12 @@ C AS ( V.CUST_NO FROM VIEW_RPT_BASE_INFO V\,A WHERE V.MODEL_SCORE > A.DOWN AND V.MODEL_SCORE <= A.UP - AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -24 )\, '%Y%m' ) - AND DATE_FORMAT( ADD_MONTHS( '#EFFECTIVE_MONTH'\, -13 )\, '%Y%m' ) + AND V.EFFECTIVE_MONTH BETWEEN DATE_FORMAT( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 2 YEAR )\, '%Y%m' ) + AND DATE_FORMAT( DATE_ADD( DATE_ADD( '#EFFECTIVE_MONTH'\, INTERVAL - 1 YEAR )\, INTERVAL - 1 MONTH )\, '%Y%m' ) AND V.MODEL_CODE='#MODEL_CODE' )\, C1 AS ( SELECT EFFECTIVE_Q\, SCORE_AREA\, COUNT( 1 ) AS CUST_CNT FROM C GROUP BY EFFECTIVE_Q\, SCORE_AREA )\, -C2 AS ( SELECT EFFECTIVE_Q\, CAST(SUM( CUST_CNT ) AS DECIMAL) AS TOT_CUST_CNT FROM C1 GROUP BY EFFECTIVE_Q )\, +C2 AS ( SELECT EFFECTIVE_Q\, SUM( CUST_CNT ) AS TOT_CUST_CNT FROM C1 GROUP BY EFFECTIVE_Q )\, C3 AS ( SELECT C1.EFFECTIVE_Q\, @@ -1800,21 +1948,21 @@ FROM ( AND C3.SCORE_AREA = B3.SCORE_AREA ) T GROUP BY T.EFFECTIVE_Q ) TT ORDER BY TT.EFFECTIVE_Q",,,,,, -"20","rptRatingOverturn","客户评级推翻情况报表","DM DBMS","SELECT +"9","rptRatingOverturn","客户评级推翻情况报表","MYSQL","SELECT T.EFFECTIVE_MONTH\, T.CUST_CNT\, T.OVERTURN_CNT\, - ROUND(CASE WHEN T.OVERTURN_CNT = 0 THEN 0 ELSE T.OVERTURN_CNT/T.CUST_CNT END,4) AS OVERTURN_RATIO\, - ROUND(CASE WHEN UP_OVERTURN_CNT = 0 THEN 0 ELSE UP_OVERTURN_CNT/T.CUST_CNT END,4) AS UP_OVERTURN_RATIO\, - ROUND(CASE WHEN DOWN_OVERTURN_CNT = 0 THEN 0 ELSE DOWN_OVERTURN_CNT/T.CUST_CNT END,4) AS DOWN_OVERTURN_RATIO\, - ROUND(CASE WHEN ONE_LVL_CNT = 0 THEN 0 ELSE ONE_LVL_CNT/T.CUST_CNT END,4) AS ONE_LVL_RATIO\, - ROUND(CASE WHEN TWO_LVL_CNT = 0 THEN 0 ELSE TWO_LVL_CNT/T.CUST_CNT END,4) AS TWO_LVL_RATIO\, - ROUND(CASE WHEN THREE_LVL_CNT = 0 THEN 0 ELSE THREE_LVL_CNT/T.CUST_CNT END,4) AS THREE_LVL_RATIO\, - ROUND(CASE WHEN THREE_MORE_LVL_CNT = 0 THEN 0 ELSE THREE_MORE_LVL_CNT/T.CUST_CNT END,4) AS THREE_MORE_LVL_RATIO + CASE WHEN T.OVERTURN_CNT = 0 THEN 0 ELSE T.OVERTURN_CNT/T.CUST_CNT END AS OVERTURN_RATIO\, + CASE WHEN UP_OVERTURN_CNT = 0 THEN 0 ELSE UP_OVERTURN_CNT/T.CUST_CNT END AS UP_OVERTURN_RATIO\, + CASE WHEN DOWN_OVERTURN_CNT = 0 THEN 0 ELSE DOWN_OVERTURN_CNT/T.CUST_CNT END AS DOWN_OVERTURN_RATIO\, + CASE WHEN ONE_LVL_CNT = 0 THEN 0 ELSE ONE_LVL_CNT/T.CUST_CNT END AS ONE_LVL_RATIO\, + CASE WHEN TWO_LVL_CNT = 0 THEN 0 ELSE TWO_LVL_CNT/T.CUST_CNT END AS TWO_LVL_RATIO\, + CASE WHEN THREE_LVL_CNT = 0 THEN 0 ELSE THREE_LVL_CNT/T.CUST_CNT END AS THREE_LVL_RATIO\, + CASE WHEN THREE_MORE_LVL_CNT = 0 THEN 0 ELSE THREE_MORE_LVL_CNT/T.CUST_CNT END AS THREE_MORE_LVL_RATIO FROM ( SELECT V.EFFECTIVE_MONTH\, - CAST(COUNT(V.CUST_NO) AS DECIMAL) AS CUST_CNT\, + COUNT(V.CUST_NO) AS CUST_CNT\, SUM(CASE WHEN V.ORIGINAL_LEVEL <> V.INIT_LEVEL THEN 1 ELSE 0 END) AS OVERTURN_CNT\, SUM(CASE WHEN V.ORDER_NUM > V.INIT_ORDER_NUM THEN 1 ELSE 0 END) AS UP_OVERTURN_CNT\, SUM(CASE WHEN V.ORDER_NUM < V.INIT_ORDER_NUM THEN 1 ELSE 0 END) AS DOWN_OVERTURN_CNT\, diff --git a/irbs.defaultManager/src/main/java/irbs/defaultManager/jpa/repository/DefaultAutoTmpRepository.java b/irbs.defaultManager/src/main/java/irbs/defaultManager/jpa/repository/DefaultAutoTmpRepository.java index 4ee8ea5..d634f27 100644 --- a/irbs.defaultManager/src/main/java/irbs/defaultManager/jpa/repository/DefaultAutoTmpRepository.java +++ b/irbs.defaultManager/src/main/java/irbs/defaultManager/jpa/repository/DefaultAutoTmpRepository.java @@ -30,7 +30,7 @@ public interface DefaultAutoTmpRepository extends DaoRepository { @Transactional @Modifying @@ -31,11 +33,15 @@ public interface RebirthAutoTmpRepository extends DaoRepository expoRuleMainList = null; private Map> expoRuleDtlMap = null; @@ -50,10 +55,31 @@ public class RiskExposureBatchServiceImpl implements RiskExposureBatchService, J @Override public void exec() throws Exception{ cacheRule(); + insertAutoRiskExposureDebt(); recogRiskExposure(); saveRiskExposureResult(); } + /** + * 插入自动风险暴露分类的基础债项数据 + * @throws Exception + */ + private void insertAutoRiskExposureDebt() throws Exception { + DatabaseType type = DatabaseType.fromMetaData(dataSource); + String sql = "select sql_text from ns_r_cfg_rpt_sql where report_id='insertRiskExposureAutoData' and database_type='" + type + "'"; + Map map = jdbcTemplate.queryForMap(sql); + if(map != null && map.get("SQL_TEXT") != null){ + sql = String.valueOf(map.get("SQL_TEXT")); + Map params = new HashMap<>(); + params.put("DATA_DT", DateUtil.getLastMonthEndString()); + sql = RptSqlFormat.format(sql, params); + //先删除相同数据日期的债项数据,避免任务重跑引起数据重复 + jdbcTemplate.execute("delete from P_IRS_RISK_EXPOSURE_DEBT where DATA_DT='" + DateUtil.getLastMonthEndString() + "'"); + //执行插入语句 + jdbcTemplate.execute(sql); + } + } + /** * 保存风险暴露分类结果 */ @@ -65,7 +91,7 @@ public class RiskExposureBatchServiceImpl implements RiskExposureBatchService, J private void recogRiskExposure() { List debts = riskExposureDebtService.findLastMonthData(); - if(debts != null){ + if(debts != null && debts.size() > 0){ //删除风险暴露分类结果临时表中的数据 jdbcTemplate.execute("delete from P_IRS_RISK_EXPOSURE_TMP"); String sql = "insert into P_IRS_RISK_EXPOSURE_TMP(ID,BUSINESS_NO,PRODUCT_TYPE,CUST_NO,CUST_NAME,START_WAY,IS_NEED_OPERATE,ADJUST_END_DATE,FINISH_DATE,SYS_RESULT,MANAGER_NAME,MGER_ORG_NM,CUST_TYPE,DATA_COME_FROM_,CREATOR_,CREATE_DATE_,LAST_MODIFIER_,LAST_MODIFYDATE_,CORP_CODE_) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/utils/RptSqlFormat.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/utils/RptSqlFormat.java new file mode 100644 index 0000000..b4f7d37 --- /dev/null +++ b/irbs.riskExposure/src/main/java/irbs/riskExposure/utils/RptSqlFormat.java @@ -0,0 +1,36 @@ +package irbs.riskExposure.utils; + +import io.sc.platform.core.util.StringUtil; + +import java.util.Map; + +public class RptSqlFormat { + + public static String format(String sql, Map params){ + if(params != null) { + for(String p : params.keySet()){ + if(StringUtil.isNullOrEmpty(params.get(p))){ + sql = replace(sql, p); + continue; + } + String c = "#" + p; + sql = sql.replaceAll(c, params.get(p)); + if(!StringUtil.isNullOrEmpty(params.get(p)) && sql.indexOf("<" + p + ">") != -1){ + sql = sql.replaceAll("<" + p + ">", "").replaceAll("", ""); + } + } + } + return sql; + } + + public static String replace(String sql, String code){ + if(sql.indexOf("<"+code+">") == -1){ + return sql; + } + sql = sql.substring(0, sql.indexOf("<"+code+">")) + sql.substring(sql.indexOf("")+code.length()+4); + if(sql.indexOf("<"+code+">") != -1){ + sql = replace(sql, code); + } + return sql; + } +}