SQL中如何按日期筛选重复数据里最早的记录
筛选重复数据中的最早条目(黄色标记项)
我来给你分享两个实用的办法,轻松搞定筛选重复数据里最早的那条(就是你标黄色的这类条目),不管是用基础的表格功能还是更高效的工具都能实现:
方法一:用辅助列快速定位最早条目
这个方法适合新手,操作简单直观:
- 先确定你判断重复的依据列(比如图里的订单号类列),以及记录时间的列(用来判定“最早”的时间列)。
- 插入一个辅助列(比如在数据最右侧新增一列),在第一行的辅助列单元格里输入公式:
=COUNTIF(A$1:A1,A1)
(这里的A列替换成你的重复依据列,比如如果是B列就改成B$1:B1) - 把公式下拉填充到所有行,第一次出现的重复值对应的辅助列会显示1,这就是你要找的最早那条数据。
- 最后筛选辅助列等于1的行,就是你需要的黄色标记条目,选中后还可以直接填充黄色完成标记。
如果你的重复判断是多列组合(比如需要同时看订单号+客户名才判定重复),就把公式改成多条件计数:=COUNTIFS(A$1:A1,A1,B$1:B1,B1)
(A、B列替换成你的组合判断列即可)
方法二:用Power Query批量提取最早条目
如果数据量比较大,用Power Query更高效,还能直接生成干净的结果表:
- 选中你的整个数据区域,点击表格工具顶部「数据」选项卡的「从表格/区域」(2016及以后版本自带该功能,旧版本可以安装「Power Query」插件),把数据导入编辑器。
- 在编辑器里,选中用来判断重复的列(比如订单号列),点击「开始」选项卡的「分组依据」。
- 在分组设置窗口里:
- 分组依据:选你判断重复的列(多列重复就选多个列)
- 新列名:随便起一个,比如「最早记录」
- 操作:选择「所有行」,然后点击确定。
- 点击新列「最早记录」旁边的展开箭头,选择「高级」,在弹出的窗口里:
- 把时间列的操作改成「最小值」(这样就能提取该组最早的时间)
- 其他需要保留的列,根据需求选「任意值」或者对应逻辑,然后确定。
- 最后点击「关闭并上载」,结果会自动导出到新的工作表,这里面就是每个重复组里的最早条目了。
内容的提问来源于stack exchange,提问作者Ikzer
相关产品推荐
相关产品推荐

