SQL语句:用一条语句找到最早的时间和最近的时间两个记录(在规定时间段内)

前些天在CSDN看到有人发帖求助,题目是:
   某个数据库表中每个人对应许多条记录,每条记录对应一个时间,她想找到用一条语句找到最早的时间和最近的时间两个记录(在规定时间段内),如下所示
name mdate cj
小芳 2005-8-2 58
小芳 2006-3-1 58
小芳 2007-3-12 60
小芳 2007-8-10 60
小芳 2008-2-22 80
小芳 2009-3-6 75
小芳 2009-11-16 89
娟娟 2004-3-6 60
娟娟 2005-2-1 88
娟娟 2008-12-20 90

要的结果就是要找到小芳在07年4月1日至09年6月时间段内最早和最近的两条记录,并且把它融合成一条新记录,得到的结果就为

name mdate1 cj1 mdate2 cj2
小芳 2007-8-10 60 2009-3-6 75
我没做,不过看到跟帖的人回答的很好,所以摘抄一下,以便学习:
1.
select
a.name,convert(varchar(10),a.mdate,120) as mdate1,a.cj as cj1,convert(varchar(10),b.mdate,120) as mdate2,b.cj as cj2
from
(select * from [tb] t where mdate=(select min(mdate) from tb where name=t.name))a
join
(select * from [tb] t where mdate=(select max(mdate) from tb where name=t.name))b
on
a.name=b.name
2. select name,mdate1 = min (mdate),cj1 = ( select top 1 cj from @tb where name = t.name and mdate between ' 2007-04-01 ' and ' 2009-07-01 ' order by mdate asc ) ,
mdate2
= max (mdate),cj2 = ( select top 1 cj from @tb where name = t.name and mdate between ' 2007-04-01 ' and ' 2009-07-01 ' order by mdate desc )
from @tb t
where mdate between ' 2007-04-01 ' and ' 2009-07-01 '
group by name

你可能感兴趣的:(sql,数据库,时间,查询,记录)