当前位置: 代码迷 >> Sql Server >> 能否用一条Update语句完成拷贝下一条记录的值
  详细解决方案

能否用一条Update语句完成拷贝下一条记录的值

热度:49   发布时间:2016-04-27 11:28:57.0
能否用一条Update语句完成拷贝上一条记录的值?
我的问题应该不难:
  比如有一张学生成绩单数据表TB,涉及到的字段有记录ID,学生标识SID,测试日期TDate,体育成绩Grade。当一条新的记录插入以后(Grade默认值是-1),我想用Update语句更改Grade的值为该学生上一次(按测试日期TDate)的Grade值。以便使用者在上次值的基础上修改。如果该学生(SID)没有上一次记录(第一次录入),Grade则以NULL代之。
  能否用一条语句Update实现,不要存储过程。谢谢!

------解决方案--------------------
SQL code
--> 测试数据: @TBdeclare @TB table (ID int identity(1,1),SID int,TDate datetime,Grade int)insert into @TBselect 2,'2012-01-01',83 union allselect 3,'2012-02-01',59 union allselect 4,'2012-04-01',89select * from @TBinsert into @TB  select 5,getdate(),(select top 1 Grade from @TB order by TDate desc)select * from @TB/*ID          SID         TDate                   Grade----------- ----------- ----------------------- -----------1           2           2012-01-01 00:00:00.000 832           3           2012-02-01 00:00:00.000 593           4           2012-04-01 00:00:00.000 894           5           2012-08-12 18:52:33.747 89*/
------解决方案--------------------
探讨
maco_wang:

你的好像不对。我的意思是2,3,4号学生在分别自2012-1-1,2012-2-1和2012-4-1第一次录入,当2,3,4号学生第二次录入(日期假如是2012-5-1),他们应该83,59和Null,而5号学生在2012-5-1是第一次录入,他的Grade应该是NULL。
  相关解决方案