SQLServer 某列值连续4行相同则输出其1行(测试)

本文详细介绍了如何使用SQL创建表、插入数据,并通过游标技术筛选特定条件的数据,特别关注了连续出现相同值的四行数据的提取方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


--	drop table test
create table test(name varchar(20),value int)

insert into test(name,value)
values('aa',1),('pp',1),('hh',-1),('ff',1),('ee',1),('ff',1),('aa',1),('jj',1),('ee',-1)
,('aa',1),('oo',1),('aa',1),('ff',1),('uu',1),('uu',1),('bb',1),('ll',1),('ll',-1)

select * from test


以上红框中是要输出的结果:输出为1的,连续4行为1则输出第四行值

7 aa 1
13 ff 1
17 ll 1


使用游标的方法:

declare @id int
declare @name varchar(20)
declare @value int
declare @id2 int
declare @value2 int
declare @mk int
set @mk = 1
declare cur cursor local fast_forward 
	for select row_number()over(order by (select 0)) as id,name,value from test
open cur
fetch next from cur into @id,@name,@value
while @@fetch_status = 0
begin
	set @id2 = @id
	set @value2 = @value
	fetch next from cur into @id,@name,@value
	if(@id2+1=@id and @value2 = @value and @value=1)
	begin
		set @mk = @mk +1
		if (@mk = 4)
		begin
			--结果输出或者插入到某个表中
			select @id as id,@name as name,@value as value
			set @mk = 0
		end
	end
	else set @mk = 1
end
close cur
deallocate cur




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值