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

如何查找TRANS表中三列重复条目并按HPAN分组展示

解决TRANS表重复记录筛选问题

问题分析

你原查询的问题在于子查询中额外加入了TRANS_TYPE的匹配条件,而你的需求是仅根据REQAMT、ADDRESS_NAME、HPAN这三列判断重复,这就导致原本属于同一重复组的记录(比如HPAN=23、REQAMT=4.78、ADDRESS_NAME=Paris但TRANS_TYPE不同的两条)被排除在重复判断外,最终返回了所有符合日期条件的记录。

解决方案

方法1:使用窗口函数(推荐)

窗口函数可以更高效地标记重复组,同时直接筛选出重复记录:

SELECT AUTHIDRESP, REQAMT, ADDRESS_NAME, HPAN, MSG_TYPE, TRANS_TYPE
FROM (
    SELECT 
        AUTHIDRESP, REQAMT, ADDRESS_NAME, HPAN, MSG_TYPE, TRANS_TYPE,
        COUNT(*) OVER (PARTITION BY REQAMT, ADDRESS_NAME, HPAN) AS dup_count
    FROM TRANS
    WHERE date = '20240815'
) t
WHERE dup_count > 1
ORDER BY HPAN, AUTHIDRESP;

方法2:修正子查询条件

去掉原查询中子查询里的TRANS_TYPE匹配条件,仅保留REQAMT、ADDRESS_NAME、HPAN的判断:

SELECT AUTHIDRESP, REQAMT, ADDRESS_NAME, HPAN, MSG_TYPE, TRANS_TYPE
FROM TRANS s
WHERE date = '20240815'
AND 1 < (
    SELECT COUNT(*) 
    FROM TRANS i 
    WHERE i.REQAMT = s.REQAMT 
      AND i.ADDRESS_NAME = s.ADDRESS_NAME 
      AND i.HPAN = s.HPAN
)
ORDER BY HPAN, AUTHIDRESP;

说明

  • 两种方法都会筛选出REQAMT、ADDRESS_NAME、HPAN三列完全相同的所有重复记录
  • 最后加上ORDER BY HPAN, AUTHIDRESP可以实现按HPAN分组展示的效果(和你期望的输出一致)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:15:05