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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章