2009-07-20 80 views
2

标题可能没有多少意义,所以我会尝试在这里描述主题。选择非重复的记录加入到重复日期记录到最后日期

考虑2个表中MSSQL2005:

例表:

id int, 
caseNo string 

事件表:

id int, 
caseID int, 
eventDate date/time 

我需要将返回视图的select语句行: cases.caseNo,events.eventDate(仅限日期部分)

他们是多对一相关/加入events.caseID = cases.id。每个病例记录有多个事件记录。我想结果集是单个caseNo与最新/最近值的events.eventDate。

在此先感谢。

回答

3

您可以只使用max函数来获取最新的日期,就像这样:

select 
    c.caseNo, 
    max(e.eventDate) as eventDate 
from 
    cases c 
    inner join events e on 
     c.id = e.caseid 
group by 
    c.caseNo 
+0

更简单,更清洁。 – 2009-07-20 17:01:58

5

有5种方法来做到这一点,这些描述如下:Including an Aggregated Column's Related Values

基本上是这样的,如果你需要的不仅仅是时间和案例ID

select e.*,c.* 
from(
select caseID,max(evendate) as MaxEventDate 
from Events 
group by caseID) x 
join Cases c on c.Id = x.caseID 
join Events e on e.eventDate = x.MaxEventDate 
and e.caseID = x.caseID 

否则只是通过组ID和最大使用日期

更多
select max(e.EventDate) as MaxEventDate, 
    c.CaseNo 
from 
    Cases c 
    join Events e on 
     e.caseid = c.id 
group by c.caseNo 
+0

感谢您的回复,SQLMenace。该文章的链接将很有用。 – kenalacom 2009-07-20 18:19:12