首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2012-09-17 
能否用一条Update语句完成拷贝上一条记录的值?我的问题应该不难:比如有一张学生成绩单数据表TB,涉及到的字

能否用一条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。

热点排行