您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

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

2025/12/15 15:00:20发布24次查看
insus.net尝试写了程序并做了测试,可以得到预期的结果,sql代码可参考和学习之用。
有在论坛上看到一帖,《》,截图如下:
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 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天,或任何一天。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product