34,590
社区成员
发帖
与我相关
我的任务
分享
CREATE TABLE [dbo].[test] (
[sid] int NOT NULL ,
[date] int NULL ,
[score] int NULL
)
GO
-- ----------------------------
-- Records of test
-- ----------------------------
INSERT INTO [dbo].[test] ([sid], [date], [score]) VALUES (N'1', N'20140526', N'67');
GO
INSERT INTO [dbo].[test] ([sid], [date], [score]) VALUES (N'1', N'20140525', N'77');
GO
INSERT INTO [dbo].[test] ([sid], [date], [score]) VALUES (N'1', N'20140524', N'23');
GO
INSERT INTO [dbo].[test] ([sid], [date], [score]) VALUES (N'2', N'20140525', N'44');
GO
INSERT INTO [dbo].[test] ([sid], [date], [score]) VALUES (N'2', N'20140524', N'66');
GO
INSERT INTO [dbo].[test] ([sid], [date], [score]) VALUES (N'2', N'20140523', N'89');
GO
INSERT INTO [dbo].[test] ([sid], [date], [score]) VALUES (N'3', N'20140526', N'55');
GO
INSERT INTO [dbo].[test] ([sid], [date], [score]) VALUES (N'3', N'20140525', N'55');
GO
INSERT INTO [dbo].[test] ([sid], [date], [score]) VALUES (N'3', N'20140524', N'34');
GO
2 1 20140525 77 1 1 20140524 23 54
2 3 20140525 55 1 3 20140524 34 21
3 3 20140526 55 2 3 20140525 55 0
3 1 20140526 67 2 1 20140525 77 -10
3 2 20140525 44 2 2 20140524 66 -22
2 2 20140524 66 1 2 20140523 89 -23
改过之后的结果,可以看出,同一个学生sid=2的,24号减23号的,25号减24号的都是负增长。而且排序也在一起;
with wang as (select rowid=ROW_NUMBER() over(PARTITION by sid order by date),* from test)
select *,t.score-s.score
from wang s join wang t on s.sid=t.sid and s.rowid=t.rowid+1
order by t.score-s.score desc
2 2 20140524 66 1 2 20140523 89 23
3 2 20140525 44 2 2 20140524 66 22
3 1 20140526 67 2 1 20140525 77 10
3 3 20140526 55 2 3 20140525 55 0
2 3 20140525 55 1 3 20140524 34 -21
2 1 20140525 77 1 1 20140524 23 -54