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

MS Access/SQL Developer多值记录处理求助:展示记录及统计次数

数据库重复记录统计解决方案

场景1:按CUST_NO + DATE组合统计出现次数

如果需要统计每个CUST_NO和DATE组合的重复次数,同时保留该组合对应的完整记录内容,分两种情况实现:

支持窗口函数的数据库(MySQL 8.0+、PostgreSQL、SQL Server等)

直接用窗口函数COUNT(*) OVER (PARTITION BY ...),无需分组丢失原记录:

SELECT 
    CUST_NO,
    DATE,
    -- 替换为你表中实际需要展示的字段,比如交易金额、备注等
    TRANS_AMOUNT,
    REMARK,
    -- 统计当前CUST_NO+DATE组合的出现次数
    COUNT(*) OVER (PARTITION BY CUST_NO, DATE) AS occurrence_count
FROM your_table_name;

不支持窗口函数的数据库(MySQL 5.x等)

用子查询分组统计后关联原表:

SELECT 
    t1.CUST_NO,
    t1.DATE,
    t1.TRANS_AMOUNT,
    t1.REMARK,
    t2.occurrence_count
FROM your_table_name t1
INNER JOIN (
    -- 先分组统计每个CUST_NO+DATE的次数
    SELECT CUST_NO, DATE, COUNT(*) AS occurrence_count
    FROM your_table_name
    GROUP BY CUST_NO, DATE
) t2 ON t1.CUST_NO = t2.CUST_NO AND t1.DATE = t2.DATE;

场景2:按CUST_NO统计总记录数

如果只需要统计每个客户(CUST_NO)的总出现次数,同时保留每条记录的详情:

窗口函数实现

SELECT 
    CUST_NO,
    DATE,
    TRANS_AMOUNT,
    REMARK,
    -- 统计当前客户的总记录数
    COUNT(*) OVER (PARTITION BY CUST_NO) AS total_cust_records
FROM your_table_name;

子查询关联实现

SELECT 
    t1.*,
    t2.total_cust_records
FROM your_table_name t1
INNER JOIN (
    SELECT CUST_NO, COUNT(*) AS total_cust_records
    FROM your_table_name
    GROUP BY CUST_NO
) t2 ON t1.CUST_NO = t2.CUST_NO;

特殊情况:单条记录内DATE字段含多值

如果DATE是数组、JSON等多值类型(比如同一条记录里DATE有多个重复值),需要先拆分多值再统计。以PostgreSQL的数组类型为例:

SELECT 
    CUST_NO,
    -- 拆分数组为单个日期值
    unnest(DATE) AS single_date,
    TRANS_AMOUNT,
    REMARK,
    -- 统计拆分后每个CUST_NO+单个日期的出现次数
    COUNT(*) OVER (PARTITION BY CUST_NO, unnest(DATE)) AS date_occurrence
FROM your_table_name;

注意:将上述代码中的your_table_name、TRANS_AMOUNT、REMARK替换为你实际的表名和字段名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 00:22:33