SQL Server 如何筛选仅包含连续日期的分类?
SQL Server 筛选全日期连续的分类实现方案
核心逻辑
判断分类下所有日期是否连续的规则为:同一个分类下,最早日期到最晚日期的自然总天数 = 该分类下的日期数量(单条日期默认符合要求)。
实现代码
假设你的表名为YourTable,可直接使用以下查询:
SELECT Category FROM YourTable GROUP BY Category HAVING DATEDIFF(DAY, MIN([Date]), MAX([Date])) + 1 = COUNT(DISTINCT [Date]) ORDER BY Category
说明
- 先按
Category字段分组,对每个分类单独统计指标 DATEDIFF(DAY, MIN([Date]), MAX([Date])) + 1:计算该分类下最早日期到最晚日期之间的总自然天数COUNT(DISTINCT [Date]):统计该分类下非重复的日期数量,避免同一天存在多条数据导致统计偏差;如果你的业务已保证同一个分类同一天只有一条记录,可以去掉DISTINCT提升查询性能- 当两个指标相等时,说明该分类下的所有日期完全连续,符合筛选要求
针对你提供的示例数据执行上述查询,将直接返回Category为1、3、4的结果,和预期输出完全一致。
内容的提问来源于stack exchange,提问作者Maor
相关产品推荐
相关产品推荐

