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

如何按COMPANY与NATURAL_PERSON筛选符合条件的最大FECHA_DE_REPORTE全行数据

解决SQL中最大审计日期对应记录不匹配的问题

你遇到的问题很典型——当用GROUP BY聚合时,非聚合列会返回组内的任意值,导致你拿到的FOLIO_CONSULTA和最大的FECHA_DE_REPORTE不是来自同一条记录。咱们一步步来修正这个问题:

需求回顾

  • 先筛选出每个自然人(NATURAL_PERSON)的审计日期(FECHA_DE_REPORTE)早于等于其所属公司首次放款日期(FIRST_LOAN)的所有记录
  • 再对每个(公司COMPANY + 自然人NATURAL_PERSON)组合,取审计日期最新的那一行完整数据

原SQL的问题

你的查询用了GROUP BY来分组,但SELECT里的DIGITAL_SIGNATURE_ID、FOLIO_CONSULTA这些列没有被聚合,数据库会随机返回组内的某一条值,自然没法和MAX(FECHA_DE_REPORTE)对应上。

解决方案:用窗口函数精准定位目标行

最可靠的方法是用ROW_NUMBER()窗口函数,先筛选出符合日期条件的所有记录,再给每个分组内的记录按审计日期降序编号,取编号为1的那一行就是我们要的最新记录:

WITH filtered_records AS (
    SELECT 
        NPC.COMPANY_ID,
        NPC.NATURAL_PERSON_ID,
        NPS.DIGITAL_SIGNATURE_ID,
        CDC.FOLIO_CONSULTA,
        CDC.FECHA_DE_REPORTE,
        FIRST_LOAN.FIRST_LOAN,
        -- 按公司+自然人分组,审计日期降序编号,最新的行编号为1
        ROW_NUMBER() OVER (
            PARTITION BY NPC.COMPANY_ID, NPC.NATURAL_PERSON_ID 
            ORDER BY CDC.FECHA_DE_REPORTE DESC
        ) AS rn
    FROM KONFIO.NATURAL_PERSON_COMPANY NPC
    LEFT JOIN KONFIO.NATURAL_PERSON_SIGNATURE NPS 
        ON NPS.NATURAL_PERSON_ID = NPC.NATURAL_PERSON_ID
    JOIN KONFIO.CDC_RESPONSE CDC 
        ON CDC.DIGITAL_SIGNATURE_ID = NPS.DIGITAL_SIGNATURE_ID
    JOIN (
        SELECT 
            CAPP.COMPANY_ID,
            MIN(LOAN.DOCUMENTATION_DATE) AS FIRST_LOAN
        FROM KONFIO.COMPANY_APPLICATION CAPP
        JOIN KONFIO.LOAN 
            ON LOAN.APPLICATION_ID = CAPP.APPLICATION_ID
        GROUP BY CAPP.COMPANY_ID
    ) FIRST_LOAN 
        ON FIRST_LOAN.COMPANY_ID = NPC.COMPANY_ID
    WHERE 
        CDC.FECHA_DE_REPORTE <= FIRST_LOAN.FIRST_LOAN
        AND NPC.COMPANY_ID IN (1033)
)
SELECT 
    COMPANY_ID,
    NATURAL_PERSON_ID,
    DIGITAL_SIGNATURE_ID,
    FOLIO_CONSULTA,
    FECHA_DE_REPORTE,
    FIRST_LOAN
FROM filtered_records
WHERE rn = 1;

为什么这个方法有效?

  1. filtered_records CTE先把所有符合日期条件的记录都查出来,同时用ROW_NUMBER()给每个(公司+自然人)组内的记录排序,最新的FECHA_DE_REPORTE对应rn=1
  2. 最后只筛选rn=1的行,就能确保拿到每个分组里审计日期最新的完整记录,不会出现列不匹配的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:48:14