你试试看下面的语句行不行
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

解决方案 »

  1.   

    少了合计的NewUser,还要再改改
      

  2.   

    update a 
      set NewUser = UserCount - isNull(Select UserCount from 表 where ServiceID = a.ServiceID and date = dateadd(month,-1,a.date))
      from 表 a
      

  3.   

    update 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))
      

  4.   

    --更新月份数据
    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 表