sqlserver2012如何获取某一列上下格数值突变时的行号,并查询出其前面所有行的数据?
发布网友
发布时间:2022-04-08 02:12
我来回答
共2个回答
热心网友
时间:2022-04-08 03:42
首先,没按你的思路来
创建主表test,及插入数据,字段没用你那么多
create table test
(id int,
col1 varchar(5),
col2 varchar(5))
insert into test values (1,'a','a')
insert into test values (2,'b','b')
insert into test values (3,'c','c')
insert into test values (4,'d','d')
insert into test values (10,'e','e')
insert into test values (11,'f','f')
insert into test values (12,'g','g')
insert into test values (15,'h','h')
insert into test values (16,'i','i')
insert into test values (17,'j','j')
创建另一个结果表,也就是被插入数据的表,是个空表
select * into test1 from test where 1<>1
执行下一步:
declare @minid int
declare @maxid int
declare @i int
declare @count int
select @minid=Min(id) from test
select @maxid=Max(id) from test
set @i=@minid
while @i<=@maxid
begin
select @count=COUNT(*) from test where id=@i
if @count=1
begin
insert into test1 select * from test where id=@i
end
else
begin
insert into test1 values (@i,'k','k')--这个地方写死了,你可根据你实际情况调整
end
set @i=@i+1
结果截图
热心网友
时间:2022-04-08 05:00
思路:1、(ID是自增长列)
SELECT IDENT_INCR('TableName')--返回指定表的标识字段增量值
SELECT IDENT_SEED('TableName')--返回指定表的标识字段种子值
你可以以种子值为初始值,以增量值为每次叠加的值,循环查找行的数量(这种情况数量只能是0/1),如果遇到0说明这一行不存在
希望对你有帮助,如果,没有问题还望采纳。有不懂的欢迎追问