You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL查询排除HAZARD保险类型失效问题排查请求

问题排查与解决方案

你的查询无法过滤掉HAZARD类型记录,可能是以下原因导致,对应修正方案如下:

1. 大小写匹配问题

子查询中直接使用INSTYPDESC = 'HAZARD',如果实际数据里该字段值存在大小写差异(比如hazard、Hazard),会导致匹配失败,无法排除目标记录。
修正:用UPPER()统一大小写判断:

AND UPPER(INSTYPDESC) = 'HAZARD'

2. NOT IN的NULL陷阱

如果子查询SELECT ACCTNBR FROM EIS_DW.ACCTINSRECORDS ...返回的结果包含NULL值,NOT IN会直接失效——因为任何值与NULL比较都会返回未知,最终导致所有记录被保留。
更可靠的写法是改用NOT EXISTS,它不受NULL值影响:

AND NOT EXISTS (
    SELECT 1
    FROM EIS_DW.ACCTINSRECORDS AIR
    WHERE AIR.ACCTNBR = ACD.ACCOUNT
      AND AIR.EXPIREDATE IS NULL
      AND UPPER(AIR.INSTYPDESC) = 'HAZARD'
      AND AIR.PROD_DT = (SELECT MAX(CURR_DT) FROM EIS_DW.ACCTCOMMON)
)

3. 日期字段匹配验证

确认子查询中的PROD_DT是否确实是与主查询CURR_DT对应的最新日期字段,如果两者含义不一致,会导致子查询无法找到对应记录,进而无法排除HAZARD类型数据。可以单独执行子查询,验证是否能返回正确的HAZARD类型账户列表。

修正后的完整查询

SELECT 
   ACD.MAJOR_TYPE AS "Major Type Cd"
 , ACD.MINOR_TYPE AS "Minor Type Cd"
 , ACD.ACCOUNT AS "Account Nbr"
 , ACD.OWNER_NAME AS "Owner Name"
 , ACD.CONTRACT_DATE AS "Contract Dt"
 , ACD.ORIG_BAL AS "Original Balance"
 ,INSTYPDESC

FROM EIS_DW.ACCTCOMMONLOAN ACD

 WHERE ACD.CURR_DT = (SELECT MAX(CURR_DT) FROM EIS_DW.ACCTCOMMON)
   AND UPPER(ACD.MINOR_TYPE) NOT IN ('7AP2','BSLC','CAIW','CSSF','PLFR','WCRS','WCRA','BSOF','BSOA','BSDF','BSLF','BSOL','BULA','BUFX','ACSF','ACSA','ACLF','ACFS','ACAS','7APP','XCLU','XLOC','WCAP','PLOC','PLOD','FFDU','CASF','PCFS','PCLD','PCUF','XCOL','XCLR','CMCF','CMCA','SFCF','SFCA','MFCF','MFCA','CSFX','CSAD','CCFX','CCAD')
   AND UPPER(ACD.ACCOUNT_STATUS) = 'ACT'
   AND NOT EXISTS (
       SELECT 1
       FROM EIS_DW.ACCTINSRECORDS AIR
       WHERE AIR.ACCTNBR = ACD.ACCOUNT
         AND AIR.EXPIREDATE IS NULL
         AND UPPER(AIR.INSTYPDESC) = 'HAZARD'
         AND AIR.PROD_DT = (SELECT MAX(CURR_DT) FROM EIS_DW.ACCTCOMMON)
   )

ORDER BY 3

内容的提问来源于stack exchange,提问作者BiGeek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 12:15:15