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

SQL查询连续日期记录并统计分组连续天数问题求助

问题根因

你的原有代码计算行号时未按cazi、cdip分组,所有分组的日期混在一起全局排序,生成的DateGroup标识无法区分不同分组下的独立连续区间,因此无法拆分多段日期。

修正后SQL代码
WITH dateGroup AS
(  
    SELECT 
        cazi,
        cdip,
        [date],
        -- 按cazi、cdip分组后内部按日期排序,计算连续区间标识
        DateGroup = DATEADD(dd, - ROW_NUMBER() OVER (PARTITION BY cazi, cdip ORDER BY [date]), [date])
    FROM malt
    -- 同一个分组下同一天有多条重复数据时去重
    GROUP BY cazi, cdip, [date]
)
SELECT 
    cazi,
    cdip,
    date1 = MIN([date]),
    date2 = MAX([date]),
    num_dd = DATEDIFF(dd, MIN([date]), MAX([date])) + 1
FROM dateGroup
GROUP BY cazi, cdip, DateGroup
ORDER BY cazi, cdip, date1
注意事项
  • 如果你的date字段是字符串存储(格式为dd/mm/yyyy),需要先转为日期类型避免计算错误,把所有[date]替换为CONVERT(DATE, [date], 103)即可
  • 以上代码兼容SQL Server语法,其他数据库只需调整日期函数的写法即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:06:03