读书人

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

发布时间: 2012-09-17 12:06:51 作者: rapoo

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

读书人网 >SQL Server

热点推荐