nickyqian 2023-12-26 13:51 采纳率: 62.5%
浏览 5
已结题

查询一张表中发生变化的所有结果

在一张表中有数据日期,贷款账号,本金逾期日期,利息逾期日期,五级分类,5个字段。我想根据贷款账号分组,数据日期按从小到大排列查询出对于每一个贷款账号,当本金逾期日期,利息逾期日期,五级分类三个字段中,只要其中有一个字段与上一个数据日期的值不同,就返回这两个数据日期的两行。在sql中应该如何实现?

  • 写回答

2条回答 默认 最新

  • mengduoduo_ 2023-12-26 14:34
    关注

    可以使用MySQL的窗口函数来实现
    使用LAG函数获取上一个数据日期的值。
    使用CASE语句判断本金逾期日期,利息逾期日期,五级分类三个字段是否与上一个数据日期的值相同。如果有任意一个不同,则返回1,否则返回0。
    使用SUM函数计算每个贷款账号中不同的记录数。
    最后在外层查询中过滤掉不需要的记录。

    SELECT data_date, loan_account, principal_due_date, interest_due_date, five_level_classification
    FROM (
      SELECT 
        data_date, 
        loan_account, 
        principal_due_date, 
        interest_due_date, 
        five_level_classification, 
        SUM(flag) OVER (PARTITION BY loan_account ORDER BY data_date) AS diff_count
      FROM (
        SELECT 
          data_date, 
          loan_account, 
          principal_due_date, 
          interest_due_date, 
          five_level_classification, 
          CASE 
            WHEN principal_due_date != LAG(principal_due_date, 1) OVER (PARTITION BY loan_account ORDER BY data_date) THEN 1 
            WHEN interest_due_date != LAG(interest_due_date, 1) OVER (PARTITION BY loan_account ORDER BY data_date) THEN 1 
            WHEN five_level_classification != LAG(five_level_classification, 1) OVER (PARTITION BY loan_account ORDER BY data_date) THEN 1 
            ELSE 0 
          END AS flag
        FROM table_name
      ) t
    ) t2
    WHERE diff_count > 0
    ORDER BY loan_account, data_date
    
    
    

    查询语句会返回每个贷款账号中变化的记录。需要注意的是,如果一个贷款账号在两个数据日期中的本金逾期日期,利息逾期日期,五级分类三个字段都相同,则不会被返回

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月14日
  • 已采纳回答 6月6日
  • 创建了问题 12月26日

悬赏问题

  • ¥15 C++ 菜单窗口独立出来,可以随意移动放大缩小。
  • ¥15 java代码写在记事本上后在cmd上运行时无报错但又没生成文件
  • ¥15 关于#python#的问题:在跑ldsc数据整理的时候一直抱这种错误,要么--out识别不了参数,要么--merge-alleles识别不了参数(操作系统-linux)
  • ¥15 PPOCRLabel
  • ¥15 网友们我该怎么办啊,急
  • ¥15 混合键合键合机对准标识
  • ¥100 现在不懂的是如何将当前的相机中的照片,作为纹理贴图,映射到扫描出的模型上
  • ¥15 目标跟踪,计算机视觉
  • ¥15 魔霸ROG7 pro,win11.息屏后会显示黑屏,如图,如何解决?(关键词-重新启动)
  • ¥15 有没有人知道这是哪里出了问题啊?要怎么改呀?