你试试看下面的语句行不行
update a
set a.NewUser = case when a.UserCount-isnull(b.UserCount,0)<=0 then 0 else a.UserCount-isnull(b.UserCount,0) end
from 表 a left join 表 b on a.ServiceID = b.ServiceID and datediff(MM,convert(datetime,b.Date+'-1'),convert(datetime,a.Date+'-1'))=1
update a
set a.NewUser = case when a.UserCount-isnull(b.UserCount,0)<=0 then 0 else a.UserCount-isnull(b.UserCount,0) end
from 表 a left join 表 b on a.ServiceID = b.ServiceID and datediff(MM,convert(datetime,b.Date+'-1'),convert(datetime,a.Date+'-1'))=1
set NewUser = UserCount - isNull(Select UserCount from 表 where ServiceID = a.ServiceID and date = dateadd(month,-1,a.date))
from 表 a
set a.NewUser = a.UserCount - IsNull(b.UserCount,0)
from 表 a
Left join 表 b on a.ServiceID = b.ServiceID
and a.date = dateadd(month,1,b.date))
update 表 set NewUser=case when a.UserCount-b.UserCount<0 then 0 else a.UserCount-b.UserCount end
from 表 a inner join 表 b
on a.ServiceID=b.ServiceID and datediff(month,b.date+'-01',a.date+'-01')=1
where Date<>'合计'--更新合计数据:
declare @i int,@Date varchar(7)
update 表 set NewUser=case Date='合计' then @i else NewUser end
,@i=case @Date when Date then @i+NewUser else NewUser end
,@Date=date
from 表