如何在SQL查询中基于最小日期和最大日期合并行
按Barcode合并数据并聚合日期的SQL解决方案
嘿,我看你想要把同一Barcode的多行记录合并成单行,取最早的On Date和最晚的Off Date,你的思路方向是对的,但当前的SQL语句缺少了关键的分组逻辑,导致无法正确聚合数据。
原数据示例
ClientNumber On Date Off Date Barcode ------------------------------------------------------------ 1234 01/01/2018 01/30/2018 80000258 1234 01/30/2018 02/29/2018 80000258 1234 02/29/2018 03/06/2018 80000258
期望结果
ClientNumber On Date Off Date Barcode ----------------------------------------------------------- 1234 01/01/2018 03/06/2018 80000258
修正后的SQL语句
SELECT ClientNumber, MIN([On Date]) AS "Min Date", MAX([Off Date]) AS "Max Date", Barcode FROM Orders GROUP BY ClientNumber, Barcode
关键说明
- 必须添加
GROUP BY ClientNumber, Barcode:因为你需要按ClientNumber + Barcode的组合来分组(从示例看同一Barcode属于同一个客户,不过严谨起见最好同时分组这两个字段),数据库才能知道要把哪些行归为一组,然后对每组计算最小和最大日期。 MIN([On Date])会提取每组里最早的开始日期,MAX([Off Date])提取每组里最晚的结束日期,正好匹配你的需求。
内容的提问来源于stack exchange,提问作者bgrow11
相关产品推荐
相关产品推荐

