34,594
社区成员
发帖
与我相关
我的任务
分享
create table tb(servicesid int,services varchar(10),b_flag int,b_id int)
insert into tb select 1,'a',1,1
insert into tb select 2,'a',1,2
insert into tb select 3,'a',1,4
insert into tb select 4,'a',0,0
insert into tb select 5,'a',0,0
insert into tb select 6,'b',1,1
go
select servicesid,services,b_flag,b_id = (select count(1) from tb where services=t.services and b_flag = t.b_flag and b_flag <> 0 and servicesid < t.servicesid) + 1 from tb t where b_flag <> 0
union all
select * from tb where b_flag = 0
order by servicesid
drop table tb
/*
servicesid services b_flag b_id
----------- ---------- ----------- -----------
1 a 1 1
2 a 1 2
3 a 1 3
4 a 0 0
5 a 0 0
6 b 1 1
(6 行受影响)
*/
select servicesid,services,b_flag,b_id = (select count(1) from tb where services=t.services and b_flag = t.b_flag and b_flag <> 0 servicesid < t.servicesid) + 1 from tb t
create table ceshi(servicesid int,services varchar(10),b_flag int,b_id int)
insert into ceshi select 1,'a',1,1
insert into ceshi select 2,'a',1,2
insert into ceshi select 3,'a',1,4
insert into ceshi select 4,'a',0,0
insert into ceshi select 5,'a',0,0
insert into ceshi select 6,'b',1,1
select * from ceshi
update ceshi set b_id=(select count(1) from ceshi
where services=a.services and servicesid<=a.servicesid)
from ceshi a where b_flag=1
select * from ceshi
update a
set b_id =(select count(*) from t where services=a.services and b_flag=1 and servicesid<=a.servicesid)
from t a
where b_flag=1