CREATE PROCEDURE dbo.My_SP_Clear  ASif YesterDay=0
UPDATE tb_Stie SET UPExp=100
else
UPDATE tb_Stie SET UPExp=(ToDay-YesterDay)/YesterDay 

解决方案 »

  1.   

    UPDATE tb_Stie SET UPExp= (Case when YesterDay = 0 then 100 else (ToDay-YesterDay)/YesterDay end)
      

  2.   

    UPDATE tb_Stie SET UPExp=case YesterDay when 0 then 100 else (ToDay-YesterDay)/YesterDay end
      

  3.   

    不是吧,蚂蚁兄,yesterday是字段名呀
      

  4.   

    第二个问题,建议采用游标来完成。
    定义一个游标,取出表2中的全部唯一的外键。declare @FK_id intDeclare myCursor Cursor For
    Select distinct FK_id from table2open myCursor
    fetch next from mycursor into @FK_idwhile @@fetch_status = 0
       begin
       Delete from table2 where FK_id = @FK_ID and PK_ID not in (select top 50 PK_ID from table2 where FK_ID = @FK_ID order by PK_ID DESC)
     
       fetch next from mycursor into @id
      end
    CLOSE addr_Cursor
    DEALLOCATE addr_Cursor
      

  5.   

    fetch next from mycursor into @id应为:
    fetch next from mycursor into @FK_idFK_ID 表示外键字段。PK_ID代表 table2的主键字段。
      

  6.   

    spring_ok(SpringDotNet)
    不太懂,能不能麻烦解释一下,不好意思,我没用过游标的
      

  7.   

    服务器: 消息 156,级别 15,状态 1,行 1
    在关键字 'in' 附近有语法错误。
    服务器: 消息 156,级别 15,状态 1,行 1
    在关键字 'order' 附近有语法错误。
      

  8.   

    delete 表2 where 表2的主键 not in (select top 50 表2的主键 from 表2 tem where tem.FID=表2.Fid order by 表2的主键 desc)但愿你能看懂
      

  9.   

    第二问:
    declare @i int,@str varchar(8000),@strcol varchar(8000)
    set @i=1
    set @str=''
    set @strcol=''
    select 
    @i=(case when @strcol<>FID then 1 else @i+1 end),
    @strcol=FID,
    @str=(case when @I<=50 then @str+cast(id as varchar)+',' else @str+''end )
    from 表2
    order by FID,id desc
    if @str<>''
    set @str =left(@str,len(@str)-1) exec('delete 表2 where id not in ('+@str+')')