日期:2014-05-19  浏览次数:20442 次

记录合并问题发觉自己好差劲啊.这都解决不了
id     sid     ptime
1       2         2007-03-01
2       3         2007-01-01
3       2         2007-02-01
4       2         2007-01-01
5       3         2007-03-01
要求生成的数据为
sid   lweek               pweek
2       2007-03-01     2007-02-01
3       2007-03-01     2007-01-01
sid是一个分类.我要找出2,3这两个分类的最近两条记录,并将时间合并

------解决方案--------------------


Create Table TEST
(id Int,
sid Int,
ptime Varchar(10))
Insert TEST Select 1, 2, '2007-03-01 '
Union All Select 2, 3, '2007-01-01 '
Union All Select 3, 2, '2007-02-01 '
Union All Select 4, 2, '2007-01-01 '
Union All Select 5, 3, '2007-03-01 '
GO
Select
sid,
Max(ptime) As lweek,
(Select TOP 1 ptime From TEST B Where ptime < (Select Max(ptime) From TEST Where sid = B.sid) And sid = A.sid Order By ptime Desc) As pweek
From TEST A
Group By sid
GO
Drop Table TEST
/*
sid lweek pweek
2 2007-03-01 2007-02-01
3 2007-03-01 2007-01-01
*/