• 售前

  • 售后

热门帖子
入门百科

sqlserver中如何查询出连续日期记录的代码

[复制链接]
有个胖子他姓杨 显示全部楼层 发表于 2021-10-26 13:33:29 |阅读模式 打印 上一主题 下一主题
有在论坛上看到一帖,《
请教查询出连续日期记载的方法
》,截图如下:
[img=667 border=0 longDesc=,690 alt=]https://www.jb51.net/upload/201109/20110912144842704.jpg[/img]
Insus.NET尝试写了步伐并做了测试,可以得到预期的结果,SQL代码可参考和学习之用。
复制代码 代码如下:
--创建一个临时表,将会存储连续日期的记载
CREATE TABLE #temp (IDD VARCHAR(10),SDATE DATETIME)
DECLARE @sD DATETIME --开始日期
DECLARE @eD DATETIME --竣事日期
--在记载中,找出开始与竣事日期
SELECT @sD = MIN([SDATE]), @eD = MAX([SDATE]) FROM [TT]
DECLARE @N INT = 0 --宣告一个变量,存储累记载数
--循环日期
WHILE (@sD <= @eD)
BEGIN
--假如存在
IF EXISTS (SELECT TOP 1 1 FROM [TT] WHERE [SDATE] = @sD)
BEGIN
SET @sD = DATEADD(day,1,@sD) --日期加1天
SET @N = @N + 1 --记载加1
END
ELSE --假如不存在
BEGIN
IF (@N >= 3) --判定是否大于或便是3
INSERT INTO #temp SELECT [IDD],[SDATE] FROM [TT] WHERE [SDATE] BETWEEN DATEADD(day,-@N,@sD) AND @sD
--日期加1天
SET @sD = DATEADD(day,1,@sD)
SET @N = 0 --初始化为0
END
END
--列出符合条件的记载
SELECT * FROM #temp

上面的方法,现实可以把IF (@N >= 3)这句中的3改为一个变量,这样可以方便以后的步伐扩展,某一天须要改为连续2天,4天,5天,或任何一天。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作