22,209
社区成员
发帖
与我相关
我的任务
分享
--建表
create table #Test(Aid int, AName varchar(10), Number int, Bid int, BName varchar(10))
--数据
insert into #Test
select 1,'国家',5,1,'开发前期' union all
select 1,'国家',5,2,'开发准备' union all
select 1,'国家',5,3,'开发中' union all
select 1,'国家',5,4,'开发后期'
--结果
select Aid,AName,Number*(case Bid when 1 then 1 else 0 end) as Number,Bid,BName from #test
Aid AName Number Bid BName
----------- ---------- ----------- ----------- ----------
1 国家 5 1 开发前期
1 国家 0 2 开发准备
1 国家 0 3 开发中
1 国家 0 4 开发后期
(4 行受影响)
bid是自增的么??
如果是的话就简单了
update tb set Number=0 from tb where BID>1
select AID , AName,(case when no>2 then 0 else Number end) as [number],BID, BName
from(
select row_number() over(partition by rtrim(AID)+AName+rtrim([Number]) order by getdate()) as no,*
from A left join B on A.AID=B.BID) a
select aid,aname
,number=case when aid=bid then number else 0 end
,bid,bname from tb