You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by GitBox <gi...@apache.org> on 2022/02/25 02:12:43 UTC

[GitHub] [shardingsphere] xsong123 commented on issue #15147: how to skip over SQL PARSE , directly route to allocated datasource

xsong123 commented on issue #15147:
URL: https://github.com/apache/shardingsphere/issues/15147#issuecomment-1050447683


   
   > SQL parser is necessary procedure. ShardingSphere need the SQL parser module to understand SQL, it is the basic module which can not skip.
   
   **but now complex sql which's tables don't sharding parser error:**
   Caused by: org.apache.ibatis.executor.ExecutorException: Error preparing statement.  Cause: com.google.common.util.concurrent.UncheckedExecutionException: org.apache.shardingsphere.sql.parser.exception.SQLParsingException: You have an error in your SQL syntax
   	at org.apache.ibatis.executor.statement.BaseStatementHandler.prepare(BaseStatementHandler.java:97) ~[mybatis-3.5.3.jar:3.5.3]
   	at org.apache.ibatis.executor.statement.RoutingStatementHandler.prepare(RoutingStatementHandler.java:59) ~[mybatis-3.5.3.jar:3.5.3]
   	at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:87) ~[mybatis-3.5.3.jar:3.5.3]
   	at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49) ~[mybatis-3.5.3.jar:3.5.3]
   	at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) ~[mybatis-3.5.3.jar:3.5.3]
   	at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76) ~[mybatis-3.5.3.jar:3.5.3]
   	... 39 more
   Caused by: com.google.common.util.concurrent.UncheckedExecutionException: org.apache.shardingsphere.sql.parser.exception.SQLParsingException: You have an error in your SQL syntax
   	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2051) ~[guava-29.0-jre.jar:?]
   	at com.google.common.cache.LocalCache.get(LocalCache.java:3951) ~[guava-29.0-jre.jar:?]
   	at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3974) ~[guava-29.0-jre.jar:?]
   	at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4958) ~[guava-29.0-jre.jar:?]
   	at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4964) ~[guava-29.0-jre.jar:?]
   	at org.apache.shardingsphere.infra.parser.sql.SQLStatementParserEngine.parse(SQLStatementParserEngine.java:48) ~[shardingsphere-infra-parser-5.0.0.jar:5.0.0]
   	at org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine.parse0(ShardingSphereSQLParserEngine.java:71) ~[shardingsphere-infra-parser-5.0.0.jar:5.0.0]
   	at org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine.parse(ShardingSphereSQLParserEngine.java:60) ~[shardingsphere-infra-parser-5.0.0.jar:5.0.0]
   	at org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement.<init>(ShardingSpherePreparedStatement.java:157) ~[shardingsphere-jdbc-core-5.0.0.jar:5.0.0]
   	at org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement.<init>(ShardingSpherePreparedStatement.java:128) ~[shardingsphere-jdbc-core-5.0.0.jar:5.0.0]
   	at org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection.prepareStatement(ShardingSphereConnection.java:78) ~[shardingsphere-jdbc-core-5.0.0.jar:5.0.0]
   	at sun.reflect.GeneratedMethodAccessor142.invoke(Unknown Source) ~[?:?]
   	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_181]
   	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_181]
   	at org.apache.ibatis.logging.jdbc.ConnectionLogger.invoke(ConnectionLogger.java:55) ~[mybatis-3.5.3.jar:3.5.3]
   	at com.sun.proxy.$Proxy276.prepareStatement(Unknown Source) ~[?:?]
   	at org.apache.ibatis.executor.statement.PreparedStatementHandler.instantiateStatement(PreparedStatementHandler.java:86) ~[mybatis-3.5.3.jar:3.5.3]
   	at org.apache.ibatis.executor.statement.BaseStatementHandler.prepare(BaseStatementHandler.java:88) ~[mybatis-3.5.3.jar:3.5.3]
   	at org.apache.ibatis.executor.statement.RoutingStatementHandler.prepare(RoutingStatementHandler.java:59) ~[mybatis-3.5.3.jar:3.5.3]
   	at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:87) ~[mybatis-3.5.3.jar:3.5.3]
   	at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49) ~[mybatis-3.5.3.jar:3.5.3]
   	at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) ~[mybatis-3.5.3.jar:3.5.3]
   	at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76) ~[mybatis-3.5.3.jar:3.5.3]
   	... 39 more
   Caused by: org.apache.shardingsphere.sql.parser.exception.SQLParsingException: You have an error in your SQL syntax
   	at org.apache.shardingsphere.sql.parser.core.database.parser.SQLParserExecutor.twoPhaseParse(SQLParserExecutor.java:68) ~[shardingsphere-sql-parser-engine-5.0.0.jar:5.0.0]
   	at org.apache.shardingsphere.sql.parser.core.database.parser.SQLParserExecutor.parse(SQLParserExecutor.java:49) ~[shardingsphere-sql-parser-engine-5.0.0.jar:5.0.0]
   	at org.apache.shardingsphere.sql.parser.api.SQLParserEngine.parse(SQLParserEngine.java:51) ~[shardingsphere-sql-parser-engine-5.0.0.jar:5.0.0]
   	at org.apache.shardingsphere.infra.parser.sql.SQLStatementParserExecutor.parse(SQLStatementParserExecutor.java:47) ~[shardingsphere-infra-parser-5.0.0.jar:5.0.0]
   	at org.apache.shardingsphere.infra.parser.cache.SQLStatementCacheLoader.load(SQLStatementCacheLoader.java:40) ~[shardingsphere-infra-parser-5.0.0.jar:5.0.0]
   	at org.apache.shardingsphere.infra.parser.cache.SQLStatementCacheLoader.load(SQLStatementCacheLoader.java:29) ~[shardingsphere-infra-parser-5.0.0.jar:5.0.0]
   	at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3529) ~[guava-29.0-jre.jar:?]
   	at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2278) ~[guava-29.0-jre.jar:?]
   	at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2155) ~[guava-29.0-jre.jar:?]
   	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2045) ~[guava-29.0-jre.jar:?]
   	at com.google.common.cache.LocalCache.get(LocalCache.java:3951) ~[guava-29.0-jre.jar:?]
   	at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3974) ~[guava-29.0-jre.jar:?]
   	at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4958) ~[guava-29.0-jre.jar:?]
   	at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4964) ~[guava-29.0-jre.jar:?]
   	at org.apache.shardingsphere.infra.parser.sql.SQLStatementParserEngine.parse(SQLStatementParserEngine.java:48) ~[shardingsphere-infra-parser-5.0.0.jar:5.0.0]
   	at org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine.parse0(ShardingSphereSQLParserEngine.java:71) ~[shardingsphere-infra-parser-5.0.0.jar:5.0.0]
   	at org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine.parse(ShardingSphereSQLParserEngine.java:60) ~[shardingsphere-infra-parser-5.0.0.jar:5.0.0]
   	at org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement.<init>(ShardingSpherePreparedStatement.java:157) ~[shardingsphere-jdbc-core-5.0.0.jar:5.0.0]
   	at org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement.<init>(ShardingSpherePreparedStatement.java:128) ~[shardingsphere-jdbc-core-5.0.0.jar:5.0.0]
   	at org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection.prepareStatement(ShardingSphereConnection.java:78) ~[shardingsphere-jdbc-core-5.0.0.jar:5.0.0]
   	at sun.reflect.GeneratedMethodAccessor142.invoke(Unknown Source) ~[?:?]
   	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_181]
   	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_181]
   	at org.apache.ibatis.logging.jdbc.ConnectionLogger.invoke(ConnectionLogger.java:55) ~[mybatis-3.5.3.jar:3.5.3]
   	at com.sun.proxy.$Proxy276.prepareStatement(Unknown Source) ~[?:?]
   	at org.apache.ibatis.executor.statement.PreparedStatementHandler.instantiateStatement(PreparedStatementHandler.java:86) ~[mybatis-3.5.3.jar:3.5.3]
   	at org.apache.ibatis.executor.statement.BaseStatementHandler.prepare(BaseStatementHandler.java:88) ~[mybatis-3.5.3.jar:3.5.3]
   	at org.apache.ibatis.executor.statement.RoutingStatementHandler.prepare(RoutingStatementHandler.java:59) ~[mybatis-3.5.3.jar:3.5.3]
   	at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:87) ~[mybatis-3.5.3.jar:3.5.3]
   	at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49) ~[mybatis-3.5.3.jar:3.5.3]
   	at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) ~[mybatis-3.5.3.jar:3.5.3]
   	at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76) ~[mybatis-3.5.3.jar:3.5.3]
   	... 39 more
   
   
   
   
   **the sql as below:**
   INSERT INTO lsr_standing_bk_fb2107202348_20211125 (
   	PRODUCT_CODE,
   	DATA_DATE,
   	CONTRACT_NO,
   	ASSET_CODE,
   	ASSET_NAME,
   	ASSET_AMT,
   	BUSINESS_TYPE,
   	VALUE_DATE,
   	MATURITY_DATE,
   	ASSET_TERM_DAY,
   	ASSET_TERM_MONTH,
   	ASSET_TERM_YEAR,
   	REPAYMENT_TYPE,
   	ASSET_INCOME_TYPE,
   	RATE_TYPE,
   	FEE_RATE_TYPE,
   	FEE_TYPE,
   	GUAR_TYPE,
   	MAIN_GUAR_TYPE,
   	LOAN_USAGE,
   	IS_PURCHASE,
   	IS_CUR_PURCHASE,
   	PURCHASE_DATE,
   	PURCHASE_AMT,
   	COLL_INIT_VALUATION,
   	LTV,
   	HAND_HOUSE,
   	COLL_HOUSE_CITY_TYPE,
   	COLL_HOUSE_AREA,
   	INIT_COLL_RATE,
   	INIT_DATE_PRIN_BAL,
   	CUR_OPEN_PRIN_BAL,
   	CUR_CLOSE_PRIN_BAL,
   	INIT_DATE_ACCT_AGE_DAY,
   	CUR_OPEN_ACCT_AGE_DAY,
   	CUR_CLOSE_ACCT_AGE_DAY,
   	INIT_DATE_ACCT_AGE_MONTH,
   	CUR_OPEN_ACCT_AGE_MONTH,
   	CUR_CLOSE_ACCT_AGE_MONTH,
   	INIT_DATE_ACCT_AGE_YEAR,
   	CUR_OPEN_ACCT_AGE_YEAR,
   	CUR_CLOSE_ACCT_AGE_YEAR,
   	INIT_DATE_REMAIN_TERM_DAY,
   	CUR_OPEN_REMAIN_TERM_DAY,
   	CUR_CLOSE_REMAIN_TERM_DAY,
   	INIT_DATE_REMAIN_TERM_MONTH,
   	CUR_OPEN_REMAIN_TERM_MONTH,
   	CUR_CLOSE_REMAIN_TERM_MONTH,
   	INIT_DATE_REMAIN_TERM_YEAR,
   	CUR_OPEN_REMAIN_TERM_YEAR,
   	CUR_CLOSE_REMAIN_TERM_YEAR,
   	INIT_DATE_ANNL_YIELD,
   	CUR_OPEN_ANNL_YIELD,
   	CUR_CLOSE_ANNL_YIELD,
   	FEE_RATE,
   	INIT_DATE_COMPREHENSIVE_YIELD,
   	CUR_OPEN_COMPREHENSIVE_YIELD,
   	CUR_CLOSE_COMPREHENSIVE_YIELD,
   	INIT_DATE_FIVE_CLASS,
   	CUR_OPEN_FIVE_CLASS,
   	CUR_CLOSE_FIVE_CLASS,
   	IS_CHANGE_FIVE_CLASS,
   	INIT_DATE_OVERDUE_DAY,
   	INIT_DATE_OVERDUE_DEGREE,
   	OPEN_OVERDUE_DAY,
   	OPEN_OVERDUE_DEGREE,
   	CLOSE_OVERDUE_DAY,
   	CLOSE_OVERDUE_DEGREE,
   	IS_ARREARS,
   	OVERDUE_INTEREST,
   	IS_PREPAYMENT,
   	IS_DEFAULT,
   	CUST_NO,
   	CUST_NAME,
   	CUST_TYPE,
   	CUST_PROVINCE,
   	CUST_CITY,
   	NS_FIRST_INDUSTRY,
   	NS_SECOND_INDUSTRY,
   	JOB,
   	GENDER,
   	MARITAL_STATUS,
   	BIRTHDATE,
   	INIT_DATE_INCOME_DEPT_RATIO,
   	CUR_OPEN_INCOME_DEPT_RATIO,
   	CUR_CLOSE_INCOME_DEPT_RATIO,
   	INIT_DATE_CUST_AGE,
   	CUR_OPEN_CUST_AGE,
   	CUR_CLOSE_CUST_AGE,
   	INIT_DATE_ANNL_INCOME,
   	CUR_OPEN_ANNL_INCOME,
   	CUR_CLOSE_ANNL_INCOME,
   	INIT_DATE_CREDIT_SCORING,
   	CUR_OPEN_CREDIT_SCORING,
   	CUR_CLOSE_CREDIT_SCORING,
   	INIT_DATE_CREDIT_RATING,
   	CUR_OPEN_CREDIT_RATING,
   	CUR_CLOSE_CREDIT_RATING,
   	IS_CHANGE_CREDIT_RATING,
   	DEFAULT_DATE,
   	DEFAULT_DATE_PRIN_BAL,
   	CUR_DEFAULT_REMAIN_PRIN_BAL,
   	LAWSUIT_STATUS,
   	DEFAULT_TYPE,
   	DISP_START_DATE,
   	DISP_END_DATE,
   	CUR_DEFAULT_RCVR_PRIN,
   	CUR_DEFAULT_RCVR_INT,
   	CUR_DEFAULT_RCVR_AMT,
   	DEFAULT_CUML_RCVR_PRIN,
   	DEFAULT_CUML_RCVR_INT,
   	CLOSE_DEFAULT_RCVR_AMT,
   	DISP_BUDGET,
   	CUR_DISP_PERF_COST,
   	CLOSE_DISP_PERF_COST,
   	CUR_ACT_DEDUCT_PERF_COST,
   	CLOSE_ACT_DEDUCT_PERF_COST,
   	PRIN_LOSS,
   	INT_LOSS,
   	IS_LOSS,
   	LOSS_DATE,
   	CUR_PLAN_RCVR_PRIN,
   	CUR_PLAN_RCVR_INT,
   	CUR_PLAN_RCVR_SUB_TOTAL,
   	NEXT_PLAN_RCVR_PRIN,
   	NEXT_PLAN_RCVR_INT,
   	NORM_RCVR_CNT,
   	PART_PRIOR_RCVR_CNT,
   	PRIOR_SETTL_CNT,
   	ARREARS_RCVR_CNT,
   	DEFAULT_RCVR_CNT,
   	DEPOSIT_RETN_CNT,
   	CNT_SUB_TOTAL,
   	NORM_RCVR_PRIN,
   	PART_PRIOR_RCVR_PRIN,
   	PRIOR_SETTL_PRIN,
   	ARREARS_RCVR_PRIN,
   	DEFAULT_RCVR_PRIN,
   	DEPOSIT_RETN_PRIN,
   	PRIN_SUB_TOTAL,
   	NORM_RCVR_INT,
   	PART_PRIOR_RCVR_INT,
   	PRIOR_SETTL_INT,
   	ARREARS_RCVR_INT,
   	DEFAULT_RCVR_INT,
   	DEPOSIT_RETN_INT,
   	INT_SUB_TOTAL,
   	NORM_RCVR_PENALTY,
   	PART_PRIOR_RCVR_PENALTY,
   	PRIOR_SETTL_PENALTY,
   	ARREARS_RCVR_PENALTY,
   	DEFAULT_RCVR_PENALTY,
   	DEPOSIT_RETN_PENALTY,
   	PENALTY_SUB_TOTAL,
   	NORM_RCVR_DEFAULT_INT,
   	PART_PRIOR_RCVR_DEFAULT_INT,
   	PRIOR_SETTL_DEFAULT_INT,
   	ARREARS_RCVR_DEFAULT_INT,
   	DEFAULT_RCVR_DEFAULT_INT,
   	DEPOSIT_RETN_DEFAULT_INT,
   	DEFAULT_INT_SUB_TOTAL,
   	NORM_RCVR_COMPOUND_INT,
   	PART_PRIOR_RCVR_COMPOUND_INT,
   	PRIOR_SETTL_COMPOUND_INT,
   	ARREARS_RCVR_COMPOUND_INT,
   	DEFAULT_RCVR_COMPOUND_INT,
   	DEPOSIT_RETN_COMPOUND_INT,
   	COMPOUND_INT_SUB_TOTAL,
   	NORM_RCVR_MGMT_FEE,
   	PART_PRIOR_RCVR_MGMT_FEE,
   	PRIOR_SETTL_MGMT_FEE,
   	ARREARS_RCVR_MGMT_FEE,
   	DEFAULT_RCVR_MGMT_FEE,
   	DEPOSIT_RETN_MGMT_FEE,
   	MGMT_FEE_SUB_TOTAL,
   	NORM_RCVR_OTHER_AMT,
   	PART_PRIOR_RCVR_OTHER_AMT,
   	PRIOR_SETTL_OTHER_AMT,
   	ARREARS_RCVR_OTHER_AMT,
   	DEFAULT_RCVR_OTHER_AMT,
   	DEPOSIT_RETN_OTHER_AMT,
   	OTHER_AMT_SUB_TOTAL,
   	INT_RCVR_AMT,
   	PRIN_RCVR_AMT,
   	RCVR_AMT_SUB_TOTAL,
   	RDM_REPO_STATUS,
   	RDM_REPO_TYPE,
   	RDM_REPO_DATE,
   	RDM_REPO_DEAL_DATE,
   	RDM_REPO_TRADE_DATE,
   	RDM_REPO_PRIN_BAL,
   	RDM_REPO_PRICE,
   	RDM_REASON,
   	CLOSE_ASSET_PRIN_STATUS,
   	CLOSE_ASSET_SETTL_STATUS,
   	GUAR_CATEGORY,
   	REPO_PRIN_BAL,
   	REPO_AMT,
   	REPO_TIME,
   	CREATE_TIME,
   	UPDATE_TIME
   ) SELECT
   	'XMDM202107202348',
   	to_date (
   		'2021-11-25 0:00:00',
   		'yyyy-MM-dd hh24:mi:ss'
   	),
   	IFNULL(s.contractno, s.assetcode) contract_no,
   	s.assetcode asset_code,
   	s.assetname asset_name,
   	s.FinanceAmount asset_amt,
   	CASE
   WHEN sdd1.cnname IS NOT NULL THEN
   	sdd1.cnname
   ELSE
   	s.AssetSubType
   END business_type,
    s.ValueDate value_date,
    s.MaturityDate maturity_date,
    s.termday asset_term_day,
    s.term asset_term_month,
    s.termyear asset_term_year,
    CASE
   WHEN sdd2.cnname IS NOT NULL THEN
   	sdd2.cnname
   ELSE
   	s.paytype
   END repayment_type,
    NULL asset_income_type,
    CASE
   WHEN s.ratetype = 'FI' THEN
   	'固定'
   WHEN s.ratetype = 'FL' THEN
   	'浮动'
   WHEN s.ratetype = 'FV' THEN
   	'变动'
   ELSE
   	s.ratetype
   END rate_type,
    NULL fee_rate_type,
    NULL fee_type,
    CASE
   WHEN sdd3.cnname IS NOT NULL THEN
   	sdd3.cnname
   ELSE
   	s.guaranteeway
   END guar_type,
    CASE
   WHEN s.MainGuaranteeWay = 'XY' THEN
   	'00'
   WHEN s.MainGuaranteeWay = 'BZ' THEN
   	'01'
   WHEN s.MainGuaranteeWay = 'DY' THEN
   	'02'
   WHEN s.MainGuaranteeWay = 'ZY' THEN
   	'03'
   WHEN s.MainGuaranteeWay = 'YQSG' THEN
   	'04'
   ELSE
   	s.MainGuaranteeWay
   END main_guar_type,
    CASE
   WHEN sdd4.cnname IS NOT NULL THEN
   	sdd4.cnname
   ELSE
   	s.ContractUse
   END loan_usage,
    CASE
   WHEN s.portfoliocode != 'ZCB202107202450' THEN
   	'1'
   ELSE
   	'0'
   END is_purchase,
    CASE
   WHEN s.portfoliocode != 'ZCB202107202450'
   AND s.CyclePurchaseDate >= to_date (
   	'2021-10-26 0:00:00',
   	'yyyy-MM-dd hh24:mi:ss'
   )
   AND s.CyclePurchaseDate <= to_date (
   	'2021-11-25 0:00:00',
   	'yyyy-MM-dd hh24:mi:ss'
   ) THEN
   	'1'
   ELSE
   	'0'
   END is_cur_purchase,
    s.CyclePurchaseDate purchase_date,
    CASE
   WHEN s.portfoliocode != 'ZCB202107202450' THEN
   	s.packetbalance
   ELSE
   	NULL
   END purchase_amt,
    NULL coll_init_valuation,
    NULL ltv,
    NULL hand_house,
    NULL coll_house_city_type,
    NULL coll_house_area,
    NULL init_coll_rate,
    lpbi.prin_bal init_date_prin_bal,
    CASE
   WHEN s.portfoliocode = 'ZCB202107202450'
   AND 5 = 1 THEN
   	lpbi.prin_bal
   ELSE
   	NULL
   END cur_open_prin_bal,
    s.principalbal cur_close_prin_bal,
    lpbi.acct_age_day init_date_acct_age_day,
    CASE
   WHEN s.portfoliocode = 'ZCB202107202450'
   AND 5 = 1 THEN
   	lpbi.acct_age_day
   ELSE
   	NULL
   END cur_open_acct_age_day,
    s.accountageday cur_close_acct_age_day,
    lpbi.acct_age_month init_date_acct_age_month,
    CASE
   WHEN s.portfoliocode = 'ZCB202107202450'
   AND 5 = 1 THEN
   	lpbi.acct_age_month
   ELSE
   	NULL
   END cur_open_acct_age_month,
    s.accountage cur_close_acct_age_month,
    lpbi.acct_age_year init_date_acct_age_year,
    CASE
   WHEN s.portfoliocode = 'ZCB202107202450'
   AND 5 = 1 THEN
   	lpbi.acct_age_year
   ELSE
   	NULL
   END cur_open_acct_age_year,
    s.accountageyear cur_close_acct_age_year,
    lpbi.remain_term_day init_date_remain_term_day,
    CASE
   WHEN s.portfoliocode = 'ZCB202107202450'
   AND 5 = 1 THEN
   	lpbi.remain_term_day
   ELSE
   	NULL
   END cur_open_remain_term_day,
    s.retermday cur_close_remain_term_day,
    lpbi.remain_term_month init_date_remain_term_month,
    CASE
   WHEN s.portfoliocode = 'ZCB202107202450'
   AND 5 = 1 THEN
   	lpbi.remain_term_month
   ELSE
   	NULL
   END cur_open_remain_term_month,
    s.reterm cur_close_remain_term_month,
    lpbi.remain_term_year init_date_remain_term_year,
    CASE
   WHEN s.portfoliocode = 'ZCB202107202450'
   AND 5 = 1 THEN
   	lpbi.remain_term_year
   ELSE
   	NULL
   END cur_open_remain_term_year,
    s.retermyear cur_close_remain_term_year,
    lpbi.annl_yield init_date_annl_yield,
    CASE
   WHEN s.portfoliocode = 'ZCB202107202450'
   AND 5 = 1 THEN
   	lpbi.annl_yield
   ELSE
   	NULL
   END cur_open_annl_yield,
    s.nowrate cur_close_annl_yield,
    NULL fee_rate,
    lpbi.comprehensive_yield init_date_comprehensive_yield,
    CASE
   WHEN s.portfoliocode = 'ZCB202107202450'
   AND 5 = 1 THEN
   	lpbi.comprehensive_yield
   ELSE
   	NULL
   END cur_open_comprehensive_yield,
    s.ComprehensiveRate cur_close_comprehensive_yield,
    lpbi.five_class init_date_annl_yield,
    CASE
   WHEN s.portfoliocode = 'ZCB202107202450'
   AND 5 = 1 THEN
   	lpbi.five_class
   ELSE
   	NULL
   END cur_open_five_class,
    CASE
   WHEN sdd7.cnname IS NOT NULL THEN
   	sdd7.cnname
   ELSE
   	s.fiveclass
   END cur_close_five_class,
    '1' is_change_five_class,
    lpbi.overdue_day init_date_overdue_day,
    lpbi.overdue_degree init_date_overdue_degree,
    CASE
   WHEN s.portfoliocode = 'ZCB202107202450'
   AND 5 = 1 THEN
   	lpbi.overdue_day
   ELSE
   	NULL
   END open_overdue_day,
    CASE
   WHEN s.portfoliocode = 'ZCB202107202450'
   AND 5 = 1 THEN
   	lpbi.overdue_degree
   ELSE
   	NULL
   END open_overdue_degree,
    s.existencedays close_overdue_day,
    NULL close_overdue_degree,
    CASE
   WHEN s.existencedays > 61
   AND s.existencedays <=
   AND s.isdefault = 'N' THEN
   	'1'
   ELSE
   	'0'
   END is_arrears,
    s.OwnInterest overdue_interest,
    CASE
   WHEN s.IsHappenPrepayment = 'Y' THEN
   	'1'
   ELSE
   	'0'
   END is_prepayment,
    CASE
   WHEN tad.default_date IS NULL THEN
   	'0'
   ELSE
   	'1'
   END is_default,
    s.custcode cust_no,
    s.custname cust_name,
    '0' CUST_TYPE,
    CASE
   WHEN sdd8.cnname IS NOT NULL THEN
   	sdd8.cnname
   ELSE
   	s.province
   END cust_province,
    CASE
   WHEN sdd9.cnname IS NOT NULL THEN
   	sdd9.cnname
   ELSE
   	s.city
   END cust_city,
    NULL ns_first_industry,
    CASE
   WHEN sdd11.cnname IS NOT NULL THEN
   	sdd11.cnname
   ELSE
   	s.tradetype
   END ns_second_industry,
    CASE
   WHEN sdd12.cnname IS NOT NULL THEN
   	sdd12.cnname
   ELSE
   	s.jobtype
   END job,
    CASE
   WHEN sdd13.cnname IS NOT NULL THEN
   	sdd13.cnname
   ELSE
   	s.sex
   END gender,
    CASE
   WHEN sdd14.cnname IS NOT NULL THEN
   	sdd14.cnname
   ELSE
   	s.marriagestate
   END marital_status,
    s.birthday birthdate,
    lpbi.income_dept_ratio init_date_income_dept_ratio,
    CASE
   WHEN s.portfoliocode = 'ZCB202107202450'
   AND 5 = 1 THEN
   	lpbi.income_dept_ratio
   ELSE
   	NULL
   END cur_open_income_dept_ratio,
    CASE
   WHEN s.deptincomeratio IS NULL THEN
   	CASE
   WHEN IFNULL(lpbi.prin_bal, 0) = 0 THEN
   	0
   ELSE
   	s.yearincome / lpbi.prin_bal
   END
   ELSE
   	s.deptincomeratio
   END cur_close_income_dept_ratio,
    lpbi.cust_age init_date_cust_age,
    CASE
   WHEN s.portfoliocode = 'ZCB202107202450'
   AND 5 = 1 THEN
   	lpbi.cust_age
   ELSE
   	NULL
   END cur_open_cust_age,
    s.age cur_close_cust_age,
    lpbi.annl_income init_date_annl_income,
    CASE
   WHEN s.portfoliocode = 'ZCB202107202450'
   AND 5 = 1 THEN
   	lpbi.annl_income
   ELSE
   	NULL
   END cur_open_annl_income,
    s.yearincome cur_close_annl_income,
    lpbi.credit_scoring init_date_credit_scoring,
    CASE
   WHEN s.portfoliocode = 'ZCB202107202450'
   AND 5 = 1 THEN
   	lpbi.credit_scoring
   ELSE
   	NULL
   END cur_open_credit_scoring,
    s.EvaluatePoint cur_close_credit_scoring,
    lpbi.credit_rating init_date_credit_rating,
    CASE
   WHEN s.portfoliocode = 'ZCB202107202450'
   AND 5 = 1 THEN
   	lpbi.credit_rating
   ELSE
   	NULL
   END cur_open_credit_rating,
    NULL cur_close_credit_rating,
    '1' is_change_credit_rating,
    tad.default_date,
    tad.default_date_prin_bal,
    tad.cur_default_remain_prin_bal,
    tad.lawsuit_status,
    tad.default_type,
    tad.disp_start_date,
    tad.disp_end_date,
    tadd.cur_default_rcvr_prin,
    tadd.cur_default_rcvr_int,
    tadd.cur_default_rcvr_amt,
    tadd.default_cuml_rcvr_prin,
    tadd.default_cuml_rcvr_int,
    tadd.close_default_rcvr_amt,
    tad.disp_budget,
    tadd.cur_disp_perf_cost,
    tadd.close_disp_perf_cost,
    tadd.cur_act_deduct_perf_cost,
    tadd.close_act_deduct_perf_cost,
    tad.prin_loss,
    tad.int_loss,
    tad.is_loss,
    tad.loss_date,
    NULL cur_plan_rcvr_prin,
    NULL cur_plan_rcvr_int,
    NULL cur_plan_rcvr_sub_total,
    NULL next_plan_rcvr_prin,
    NULL next_plan_rcvr_int,
    CASE
   WHEN tar.norm_rcvr_cnt > 0 THEN
   	1
   ELSE
   	0
   END norm_rcvr_cnt,
    CASE
   WHEN tar.part_prior_rcvr_cnt > 0 THEN
   	1
   ELSE
   	0
   END part_prior_rcvr_cnt,
    CASE
   WHEN tar.prior_settl_cnt > 0 THEN
   	1
   ELSE
   	0
   END prior_settl_cnt,
    CASE
   WHEN tar.arrears_rcvr_cnt > 0 THEN
   	1
   ELSE
   	0
   END arrears_rcvr_cnt,
    CASE
   WHEN tar.default_rcvr_cnt > 0 THEN
   	1
   ELSE
   	0
   END default_rcvr_cnt,
    CASE
   WHEN tar.deposit_retn_cnt > 0 THEN
   	1
   ELSE
   	0
   END deposit_retn_cnt,
    CASE
   WHEN tar.norm_rcvr_cnt > 0 THEN
   	1
   ELSE
   	0
   END + CASE
   WHEN tar.part_prior_rcvr_cnt > 0 THEN
   	1
   ELSE
   	0
   END + CASE
   WHEN tar.prior_settl_cnt > 0 THEN
   	1
   ELSE
   	0
   END + CASE
   WHEN tar.arrears_rcvr_cnt > 0 THEN
   	1
   ELSE
   	0
   END + CASE
   WHEN tar.default_rcvr_cnt > 0 THEN
   	1
   ELSE
   	0
   END + CASE
   WHEN tar.deposit_retn_cnt > 0 THEN
   	1
   ELSE
   	0
   END cnt_sub_total,
    tar.norm_rcvr_prin,
    tar.part_prior_rcvr_prin,
    tar.prior_settl_prin,
    tar.arrears_rcvr_prin,
    tar.default_rcvr_prin,
    tar.deposit_retn_prin,
    tar.prin_sub_total,
    tar.norm_rcvr_int,
    tar.part_prior_rcvr_int,
    tar.prior_settl_int,
    tar.arrears_rcvr_int,
    tar.default_rcvr_int,
    tar.deposit_retn_int,
    tar.int_sub_total,
    tar.norm_rcvr_penalty,
    tar.part_prior_rcvr_penalty,
    tar.prior_settl_penalty,
    tar.arrears_rcvr_penalty,
    tar.default_rcvr_penalty,
    tar.deposit_retn_penalty,
    tar.penalty_sub_total,
    tar.norm_rcvr_default_int,
    tar.part_prior_rcvr_default_int,
    tar.prior_settl_default_int,
    tar.arrears_rcvr_default_int,
    tar.default_rcvr_default_int,
    tar.deposit_retn_default_int,
    tar.default_int_sub_total,
    tar.norm_rcvr_compound_int,
    tar.part_prior_rcvr_compound_int,
    tar.prior_settl_compound_int,
    tar.arrears_rcvr_compound_int,
    tar.default_rcvr_compound_int,
    tar.deposit_retn_compound_int,
    tar.compound_int_sub_total,
    tar.norm_rcvr_mgmt_fee,
    tar.part_prior_rcvr_mgmt_fee,
    tar.prior_settl_mgmt_fee,
    tar.arrears_rcvr_mgmt_fee,
    tar.default_rcvr_mgmt_fee,
    tar.deposit_retn_mgmt_fee,
    tar.mgmt_fee_sub_total,
    tar.norm_rcvr_other_amt,
    tar.part_prior_rcvr_other_amt,
    tar.prior_settl_other_amt,
    tar.arrears_rcvr_other_amt,
    tar.default_rcvr_other_amt,
    tar.deposit_retn_other_amt,
    tar.other_amt_sub_total,
    tar.int_sub_total + tar.penalty_sub_total + tar.default_int_sub_total + tar.compound_int_sub_total + tar.mgmt_fee_sub_total + tar.other_amt_sub_total int_rcvr_amt,
    tar.prin_sub_total prin_rcvr_amt,
    tar.prin_sub_total + tar.int_sub_total + tar.penalty_sub_total + tar.default_int_sub_total + tar.compound_int_sub_total + tar.mgmt_fee_sub_total + tar.other_amt_sub_total rcvr_amt_sub_total,
    IFNULL(trr.rdm_repo_status, '00') rdm_repo_status,
    trr.rdm_repo_type,
    trr.rdm_repo_date,
    trr.rdm_repo_deal_date,
    CASE
   WHEN trr.rdm_repo_date IS NOT NULL THEN
   
   ELSE
   	NULL
   END rdm_repo_trade_date,
    trr.rdm_repo_prin_bal,
    trr.rdm_repo_price,
    trr.rdm_reason,
    CASE
   WHEN sdd15.cnname IS NOT NULL THEN
   	sdd15.cnname
   ELSE
   	s.PrincipalState
   END close_asset_prin_status,
    CASE
   WHEN s.PrincipalState = 'YJQ' THEN
   	'01'
   ELSE
   	'00'
   END close_asset_settl_status,
    CASE
   WHEN s.MainGuaranteeWay = 'XY' THEN
   	'00'
   ELSE
   	'01'
   END guar_category,
    NULL REPOPRINCIPALBAL,
    NULL REPOAMOUNT,
    NULL REPOTIME,
    NOW(),
    NOW()
   FROM
   	Asset_Structure_fb2107202348 s
   LEFT JOIN stt_dict sdd1 ON sdd1.itemcode = s.AssetSubType
   AND SDD1.clsno = 'BUSINESSTYPE'
   LEFT JOIN stt_dict sdd2 ON sdd2.itemcode = s.paytype
   AND SDD2.clsno = 'PERSONERLOANREPAYMENT'
   LEFT JOIN stt_dict sdd3 ON sdd3.itemcode = s.guaranteeway
   AND SDD3.clsno = 'GUARANTEEWAY'
   LEFT JOIN stt_dict sdd4 ON sdd4.itemcode = s.ContractUse
   AND SDD4.clsno = 'CONTRACTUSE'
   LEFT JOIN stt_dict sdd7 ON sdd7.itemcode = s.fiveclass
   AND SDD7.clsno = 'FIVECLASS'
   LEFT JOIN stt_dict sdd8 ON sdd8.itemcode = s.province
   AND SDD8.clsno = 'PROVINCE'
   LEFT JOIN stt_dict sdd9 ON sdd9.itemcode = s.city
   AND SDD9.clsno = 'CITY'
   LEFT JOIN stt_dict sdd11 ON sdd11.itemcode = s.tradetype
   AND SDD11.clsno = 'INTM_TRADETYPE'
   LEFT JOIN stt_dict sdd12 ON sdd12.itemcode = s.jobtype
   AND SDD12.clsno = 'JOBTYPE'
   LEFT JOIN stt_dict sdd13 ON sdd13.itemcode = s.sex
   AND SDD13.clsno = 'INTM_SEX'
   LEFT JOIN stt_dict sdd14 ON sdd14.itemcode = s.marriagestate
   AND SDD14.clsno = 'INTM_ISMARRIAGE'
   LEFT JOIN stt_dict sdd15 ON sdd15.itemcode = s.PrincipalState
   AND SDD15.clsno = 'PRINCIPALSTATE'
   LEFT JOIN lsr_packet_basic_info_fb2107202348 lpbi ON s.assetcode = lpbi.asset_code
   AND lpbi.product_code = 'XMDM202107202348'
   LEFT JOIN (
   	SELECT
   		ddt.DefaultDate default_date,
   		ddt.DefaultDateBalance default_date_prin_bal,
   		ddt.AssetDefaultPrin cur_default_remain_prin_bal,
   		CASE
   	WHEN ddt.FinalDisposalStatus = 'JC1' THEN
   		'01'
   	WHEN ddt.FinalDisposalStatus = 'JC2' THEN
   		'02'
   	WHEN ddt.FinalDisposalStatus = 'JC3' THEN
   		'31'
   	WHEN ddt.FinalDisposalStatus = 'JC4' THEN
   		'32'
   	WHEN ddt.FinalDisposalStatus = 'JC5' THEN
   		'33'
   	WHEN ddt.FinalDisposalStatus = 'JC6' THEN
   		'42'
   	WHEN ddt.FinalDisposalStatus = 'JC7' THEN
   		'41'
   	WHEN ddt.FinalDisposalStatus = 'JC8' THEN
   		'03'
   	ELSE
   		ddt.FinalDisposalStatus
   	END lawsuit_status,
   	CASE
   WHEN ddt.DefaultType = 'A' THEN
   	'00'
   WHEN ddt.DefaultType = 'B' THEN
   	'01'
   WHEN ddt.DefaultType = 'D' THEN
   	'02'
   WHEN ddt.DefaultType = 'E' THEN
   	'03'
   ELSE
   	ddt.DefaultType
   END default_type,
    ddt.FirstDisposalDate disp_start_date,
    ddt.DisposalEndDate disp_end_date,
    ddt.DisposalBudget disp_budget,
    ddt.lossprincipal prin_loss,
    ddt.lossinterest int_loss,
    CASE
   WHEN ddt.lossprincipal > 0
   OR ddt.lossinterest > 0 THEN
   	'1'
   ELSE
   	'0'
   END is_loss,
    ddt.LossLoanOccurTime loss_date,
    @num :=
   IF (
   	@KEY = ddt.ASSETCODE,
   	@num + 1,
   	1
   ) rn,
    @KEY := ddt.ASSETCODE assetcode
   FROM
   	Asset_Disposal_fb2107202348 ddt,
   	(SELECT @KEY := '', @num := 0) t1
   WHERE
   	ddt.productcode = 'XMDM202107202348'
   AND ddt.datadate <= to_date (
   	'2021-11-25 0:00:00',
   	'yyyy-MM-dd hh24:mi:ss'
   )
   AND NOT EXISTS (
   	SELECT
   		ard.assetcode,
   		'01' rdm_repo_status,
   		ar.redemptiontype rdm_repo_type,
   		ar.backdate rdm_repo_date,
   		ar.dealdate rdm_repo_deal_date,
   		IFNULL(ard.remainamount, 0) + IFNULL(ard.cancellationamount, 0) rdm_repo_prin_bal,
   		IFNULL(ard.receivedpiamount, 0) rdm_repo_price,
   		NULL rdm_reason
   	FROM
   		asset_redem ar,
   		asset_redemDetail_fb2107202348 ard
   	WHERE
   		ar.tradeid = ard.tradeid
   	AND ar.productcode = 'XMDM202107202348'
   	AND ar.backdate <= to_date (
   		'2021-11-25 0:00:00',
   		'yyyy-MM-dd hh24:mi:ss'
   	)
   	AND ar.effectflag = 'E'
   	AND ddt.assetcode = ard.assetcode
   	AND ddt.datadate > ar.DealDate
   )
   AND NOT EXISTS (
   	SELECT
   		crd.assetcode,
   		'02' rdm_repo_status,
   		NULL rdm_repo_type,
   		cr.backdate rdm_repo_date,
   		cr.dealdate rdm_repo_deal_date,
   		IFNULL(crd.receivedpiamount, 0) rdm_repo_prin_bal,
   		IFNULL(crd.receivedpiamount, 0) rdm_repo_price,
   		NULL rdm_reason
   	FROM
   		Asset_repo cr,
   		Asset_repoDetail_fb2107202348 crd
   	WHERE
   		cr.tradeid = crd.tradeid
   	AND cr.productcode = 'XMDM202107202348'
   	AND cr.backdate <= to_date (
   		'2021-11-25 0:00:00',
   		'yyyy-MM-dd hh24:mi:ss'
   	)
   	AND cr.effectflag = 'E'
   	AND ddt.assetcode = crd.assetcode
   	AND ddt.datadate > cr.DealDate
   )
   ORDER BY
   	ddt.assetcode,
   	ddt.datadate DESC
   ) tad ON s.assetcode = tad.assetcode
   AND tad.rn = 1
   LEFT JOIN (
   	SELECT
   		ddt.assetcode,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ddt.datadate >= to_date (
   					'2021-10-26 0:00:00',
   					'yyyy-MM-dd hh24:mi:ss'
   				) THEN
   					ddt.RecoveryPrincipal
   				ELSE
   					0
   				END
   			),
   			0
   		) cur_default_rcvr_prin,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ddt.datadate >= to_date (
   					'2021-10-26 0:00:00',
   					'yyyy-MM-dd hh24:mi:ss'
   				) THEN
   					ddt.RecoveryInterest
   				ELSE
   					0
   				END
   			),
   			0
   		) cur_default_rcvr_int,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ddt.datadate >= to_date (
   					'2021-10-26 0:00:00',
   					'yyyy-MM-dd hh24:mi:ss'
   				) THEN
   					IFNULL(ddt.RecoveryPrincipal, 0) + IFNULL(ddt.RecoveryInterest, 0)
   				ELSE
   					0
   				END
   			),
   			0
   		) cur_default_rcvr_amt,
   		IFNULL(
   			SUM(ddt.RecoveryPrincipal),
   			0
   		) default_cuml_rcvr_prin,
   		IFNULL(
   			SUM(ddt.RecoveryInterest),
   			0
   		) default_cuml_rcvr_int,
   		IFNULL(
   			SUM(
   				IFNULL(ddt.RecoveryPrincipal, 0) + IFNULL(ddt.RecoveryInterest, 0)
   			),
   			0
   		) close_default_rcvr_amt,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ddt.datadate >= to_date (
   					'2021-10-26 0:00:00',
   					'yyyy-MM-dd hh24:mi:ss'
   				) THEN
   					ddt.planexecutivecost
   				ELSE
   					0
   				END
   			),
   			0
   		) cur_disp_perf_cost,
   		IFNULL(
   			SUM(ddt.planexecutivecost),
   			0
   		) close_disp_perf_cost,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ddt.datadate >= to_date (
   					'2021-10-26 0:00:00',
   					'yyyy-MM-dd hh24:mi:ss'
   				) THEN
   					ddt.ExecutiveCost
   				ELSE
   					0
   				END
   			),
   			0
   		) cur_act_deduct_perf_cost,
   		IFNULL(SUM(ddt.ExecutiveCost), 0) close_act_deduct_perf_cost
   	FROM
   		Asset_Disposal_fb2107202348 ddt
   	WHERE
   		ddt.productcode = 'XMDM202107202348'
   	AND ddt.datadate <= to_date (
   		'2021-11-25 0:00:00',
   		'yyyy-MM-dd hh24:mi:ss'
   	)
   	AND NOT EXISTS (
   		SELECT
   			ard.assetcode,
   			'01' rdm_repo_status,
   			ar.redemptiontype rdm_repo_type,
   			ar.backdate rdm_repo_date,
   			ar.dealdate rdm_repo_deal_date,
   			IFNULL(ard.remainamount, 0) + IFNULL(ard.cancellationamount, 0) rdm_repo_prin_bal,
   			IFNULL(ard.receivedpiamount, 0) rdm_repo_price,
   			NULL rdm_reason
   		FROM
   			asset_redem ar,
   			asset_redemDetail_fb2107202348 ard
   		WHERE
   			ar.tradeid = ard.tradeid
   		AND ar.productcode = 'XMDM202107202348'
   		AND ar.backdate <= to_date (
   			'2021-11-25 0:00:00',
   			'yyyy-MM-dd hh24:mi:ss'
   		)
   		AND ar.effectflag = 'E'
   		AND ddt.assetcode = ard.assetcode
   		AND ddt.datadate > ar.DealDate
   	)
   	AND NOT EXISTS (
   		SELECT
   			crd.assetcode,
   			'02' rdm_repo_status,
   			NULL rdm_repo_type,
   			cr.backdate rdm_repo_date,
   			cr.dealdate rdm_repo_deal_date,
   			IFNULL(crd.receivedpiamount, 0) rdm_repo_prin_bal,
   			IFNULL(crd.receivedpiamount, 0) rdm_repo_price,
   			NULL rdm_reason
   		FROM
   			Asset_repo cr,
   			Asset_repoDetail_fb2107202348 crd
   		WHERE
   			cr.tradeid = crd.tradeid
   		AND cr.productcode = 'XMDM202107202348'
   		AND cr.backdate <= to_date (
   			'2021-11-25 0:00:00',
   			'yyyy-MM-dd hh24:mi:ss'
   		)
   		AND cr.effectflag = 'E'
   		AND ddt.assetcode = crd.assetcode
   		AND ddt.datadate > cr.DealDate
   	)
   	GROUP BY
   		ddt.assetcode
   ) tadd ON s.assetcode = tadd.assetcode
   LEFT JOIN (
   	SELECT
   		ar.assetcode,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'N' THEN
   					1
   				ELSE
   					0
   				END
   			),
   			0
   		) norm_rcvr_cnt,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'A' THEN
   					1
   				ELSE
   					0
   				END
   			),
   			0
   		) part_prior_rcvr_cnt,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'C' THEN
   					1
   				ELSE
   					0
   				END
   			),
   			0
   		) prior_settl_cnt,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'P' THEN
   					1
   				ELSE
   					0
   				END
   			),
   			0
   		) arrears_rcvr_cnt,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'O' THEN
   					1
   				ELSE
   					0
   				END
   			),
   			0
   		) default_rcvr_cnt,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'S' THEN
   					1
   				ELSE
   					0
   				END
   			),
   			0
   		) deposit_retn_cnt,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType IN ('N', 'A', 'C', 'P', 'O', 'S') THEN
   					1
   				ELSE
   					0
   				END
   			),
   			0
   		) cnt_sub_total,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'N' THEN
   					ar.ActPrincipal
   				ELSE
   					0
   				END
   			),
   			0
   		) norm_rcvr_prin,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'A' THEN
   					ar.ActPrincipal
   				ELSE
   					0
   				END
   			),
   			0
   		) part_prior_rcvr_prin,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'C' THEN
   					ar.ActPrincipal
   				ELSE
   					0
   				END
   			),
   			0
   		) prior_settl_prin,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'P' THEN
   					ar.ActPrincipal
   				ELSE
   					0
   				END
   			),
   			0
   		) arrears_rcvr_prin,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'O' THEN
   					ar.ActPrincipal
   				ELSE
   					0
   				END
   			),
   			0
   		) default_rcvr_prin,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'S' THEN
   					ar.ActPrincipal
   				ELSE
   					0
   				END
   			),
   			0
   		) deposit_retn_prin,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType IN ('N', 'A', 'C', 'P', 'O', 'S') THEN
   					ar.ActPrincipal
   				ELSE
   					0
   				END
   			),
   			0
   		) prin_sub_total,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'N' THEN
   					ar.ActInterest
   				ELSE
   					0
   				END
   			),
   			0
   		) norm_rcvr_int,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'A' THEN
   					ar.ActInterest
   				ELSE
   					0
   				END
   			),
   			0
   		) part_prior_rcvr_int,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'C' THEN
   					ar.ActInterest
   				ELSE
   					0
   				END
   			),
   			0
   		) prior_settl_int,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'P' THEN
   					ar.ActInterest
   				ELSE
   					0
   				END
   			),
   			0
   		) arrears_rcvr_int,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'O' THEN
   					ar.ActInterest
   				ELSE
   					0
   				END
   			),
   			0
   		) default_rcvr_int,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'S' THEN
   					ar.ActInterest
   				ELSE
   					0
   				END
   			),
   			0
   		) deposit_retn_int,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType IN ('N', 'A', 'C', 'P', 'O', 'S') THEN
   					ar.ActInterest
   				ELSE
   					0
   				END
   			),
   			0
   		) int_sub_total,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'N' THEN
   					ar.PaypenaltyAmt
   				ELSE
   					0
   				END
   			),
   			0
   		) norm_rcvr_penalty,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'A' THEN
   					ar.PaypenaltyAmt
   				ELSE
   					0
   				END
   			),
   			0
   		) part_prior_rcvr_penalty,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'C' THEN
   					ar.PaypenaltyAmt
   				ELSE
   					0
   				END
   			),
   			0
   		) prior_settl_penalty,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'P' THEN
   					ar.PaypenaltyAmt
   				ELSE
   					0
   				END
   			),
   			0
   		) arrears_rcvr_penalty,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'O' THEN
   					ar.PaypenaltyAmt
   				ELSE
   					0
   				END
   			),
   			0
   		) default_rcvr_penalty,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'S' THEN
   					ar.PaypenaltyAmt
   				ELSE
   					0
   				END
   			),
   			0
   		) deposit_retn_penalty,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType IN ('N', 'A', 'C', 'P', 'O', 'S') THEN
   					ar.PaypenaltyAmt
   				ELSE
   					0
   				END
   			),
   			0
   		) penalty_sub_total,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'N' THEN
   					ar.PayfineAmt
   				ELSE
   					0
   				END
   			),
   			0
   		) norm_rcvr_default_int,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'A' THEN
   					ar.PayfineAmt
   				ELSE
   					0
   				END
   			),
   			0
   		) part_prior_rcvr_default_int,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'C' THEN
   					ar.PayfineAmt
   				ELSE
   					0
   				END
   			),
   			0
   		) prior_settl_default_int,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'P' THEN
   					ar.PayfineAmt
   				ELSE
   					0
   				END
   			),
   			0
   		) arrears_rcvr_default_int,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'O' THEN
   					ar.PayfineAmt
   				ELSE
   					0
   				END
   			),
   			0
   		) default_rcvr_default_int,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'S' THEN
   					ar.PayfineAmt
   				ELSE
   					0
   				END
   			),
   			0
   		) deposit_retn_default_int,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType IN ('N', 'A', 'C', 'P', 'O', 'S') THEN
   					ar.PayfineAmt
   				ELSE
   					0
   				END
   			),
   			0
   		) default_int_sub_total,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'N' THEN
   					ar.actcompinterestamt
   				ELSE
   					0
   				END
   			),
   			0
   		) norm_rcvr_compound_int,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'A' THEN
   					ar.actcompinterestamt
   				ELSE
   					0
   				END
   			),
   			0
   		) part_prior_rcvr_compound_int,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'C' THEN
   					ar.actcompinterestamt
   				ELSE
   					0
   				END
   			),
   			0
   		) prior_settl_compound_int,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'P' THEN
   					ar.actcompinterestamt
   				ELSE
   					0
   				END
   			),
   			0
   		) arrears_rcvr_compound_int,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'O' THEN
   					ar.actcompinterestamt
   				ELSE
   					0
   				END
   			),
   			0
   		) default_rcvr_compound_int,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'S' THEN
   					ar.actcompinterestamt
   				ELSE
   					0
   				END
   			),
   			0
   		) deposit_retn_compound_int,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType IN ('N', 'A', 'C', 'P', 'O', 'S') THEN
   					ar.actcompinterestamt
   				ELSE
   					0
   				END
   			),
   			0
   		) compound_int_sub_total,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'N' THEN
   					ar.FeeAmount
   				ELSE
   					0
   				END
   			),
   			0
   		) norm_rcvr_mgmt_fee,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'A' THEN
   					ar.FeeAmount
   				ELSE
   					0
   				END
   			),
   			0
   		) part_prior_rcvr_mgmt_fee,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'C' THEN
   					ar.FeeAmount
   				ELSE
   					0
   				END
   			),
   			0
   		) prior_settl_mgmt_fee,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'P' THEN
   					ar.FeeAmount
   				ELSE
   					0
   				END
   			),
   			0
   		) arrears_rcvr_mgmt_fee,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'O' THEN
   					ar.FeeAmount
   				ELSE
   					0
   				END
   			),
   			0
   		) default_rcvr_mgmt_fee,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'S' THEN
   					ar.FeeAmount
   				ELSE
   					0
   				END
   			),
   			0
   		) deposit_retn_mgmt_fee,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType IN ('N', 'A', 'C', 'P', 'O', 'S') THEN
   					ar.FeeAmount
   				ELSE
   					0
   				END
   			),
   			0
   		) mgmt_fee_sub_total,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'N' THEN
   					ar.PayotherAmt
   				ELSE
   					0
   				END
   			),
   			0
   		) norm_rcvr_other_amt,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'A' THEN
   					ar.PayotherAmt
   				ELSE
   					0
   				END
   			),
   			0
   		) part_prior_rcvr_other_amt,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'C' THEN
   					ar.PayotherAmt
   				ELSE
   					0
   				END
   			),
   			0
   		) prior_settl_other_amt,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'P' THEN
   					ar.PayotherAmt
   				ELSE
   					0
   				END
   			),
   			0
   		) arrears_rcvr_other_amt,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'O' THEN
   					ar.PayotherAmt
   				ELSE
   					0
   				END
   			),
   			0
   		) default_rcvr_other_amt,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType = 'S' THEN
   					ar.PayotherAmt
   				ELSE
   					0
   				END
   			),
   			0
   		) deposit_retn_other_amt,
   		IFNULL(
   			SUM(
   				CASE
   				WHEN ar.RepaymentType IN ('N', 'A', 'C', 'P', 'O', 'S') THEN
   					ar.PayotherAmt
   				ELSE
   					0
   				END
   			),
   			0
   		) other_amt_sub_total
   	FROM
   		assetrecovery_fb2107202348 ar
   	WHERE
   		ar.productcode = 'XMDM202107202348'
   	AND ar.returndate >= to_date (
   		'2021-10-26 0:00:00',
   		'yyyy-MM-dd hh24:mi:ss'
   	)
   	AND ar.returndate <= to_date (
   		'2021-11-25 0:00:00',
   		'yyyy-MM-dd hh24:mi:ss'
   	)
   	AND NOT EXISTS (
   		SELECT
   			ard.assetcode,
   			'01' rdm_repo_status,
   			ar.redemptiontype rdm_repo_type,
   			ar.backdate rdm_repo_date,
   			ar.dealdate rdm_repo_deal_date,
   			IFNULL(ard.remainamount, 0) + IFNULL(ard.cancellationamount, 0) rdm_repo_prin_bal,
   			IFNULL(ard.receivedpiamount, 0) rdm_repo_price,
   			NULL rdm_reason
   		FROM
   			asset_redem ar,
   			asset_redemDetail_fb2107202348 ard
   		WHERE
   			ar.tradeid = ard.tradeid
   		AND ar.productcode = 'XMDM202107202348'
   		AND ar.backdate <= to_date (
   			'2021-11-25 0:00:00',
   			'yyyy-MM-dd hh24:mi:ss'
   		)
   		AND ar.effectflag = 'E'
   		AND ar.assetcode = ard.assetcode
   		AND ar.returndate > ar.DealDate
   	)
   	AND NOT EXISTS (
   		SELECT
   			crd.assetcode,
   			'02' rdm_repo_status,
   			NULL rdm_repo_type,
   			cr.backdate rdm_repo_date,
   			cr.dealdate rdm_repo_deal_date,
   			IFNULL(crd.receivedpiamount, 0) rdm_repo_prin_bal,
   			IFNULL(crd.receivedpiamount, 0) rdm_repo_price,
   			NULL rdm_reason
   		FROM
   			Asset_repo cr,
   			Asset_repoDetail_fb2107202348 crd
   		WHERE
   			cr.tradeid = crd.tradeid
   		AND cr.productcode = 'XMDM202107202348'
   		AND cr.backdate <= to_date (
   			'2021-11-25 0:00:00',
   			'yyyy-MM-dd hh24:mi:ss'
   		)
   		AND cr.effectflag = 'E'
   		AND ar.assetcode = crd.assetcode
   		AND ar.returndate > cr.DealDate
   	)
   	GROUP BY
   		ar.assetcode
   ) tar ON s.assetcode = tar.assetcode
   LEFT JOIN (
   	SELECT
   		ard.assetcode,
   		'01' rdm_repo_status,
   		ar.redemptiontype rdm_repo_type,
   		ar.backdate rdm_repo_date,
   		ar.dealdate rdm_repo_deal_date,
   		IFNULL(ard.remainamount, 0) + IFNULL(ard.cancellationamount, 0) rdm_repo_prin_bal,
   		IFNULL(ard.receivedpiamount, 0) rdm_repo_price,
   		NULL rdm_reason
   	FROM
   		asset_redem ar,
   		asset_redemDetail_fb2107202348 ard
   	WHERE
   		ar.tradeid = ard.tradeid
   	AND ar.productcode = 'XMDM202107202348'
   	AND ar.backdate <= to_date (
   		'2021-11-25 0:00:00',
   		'yyyy-MM-dd hh24:mi:ss'
   	)
   	AND ar.effectflag = 'E'
   	UNION ALL
   		SELECT
   			crd.assetcode,
   			'02' rdm_repo_status,
   			NULL rdm_repo_type,
   			cr.backdate rdm_repo_date,
   			cr.dealdate rdm_repo_deal_date,
   			IFNULL(crd.receivedpiamount, 0) rdm_repo_prin_bal,
   			IFNULL(crd.receivedpiamount, 0) rdm_repo_price,
   			NULL rdm_reason
   		FROM
   			Asset_repo cr,
   			Asset_repoDetail_fb2107202348 crd
   		WHERE
   			cr.tradeid = crd.tradeid
   		AND cr.productcode = 'XMDM202107202348'
   		AND cr.backdate <= to_date (
   			'2021-11-25 0:00:00',
   			'yyyy-MM-dd hh24:mi:ss'
   		)
   		AND cr.effectflag = 'E'
   ) trr ON s.assetcode = trr.assetcode
   WHERE
   	s.projectcode = 'XMDM202107202348'


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@shardingsphere.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org