按最后日期选择加入到具有重复日期记录的表的非重复记录

ken*_*com 2 sql sql-server sql-server-2005

标题可能没有多大意义,所以我将尝试在这个主题中描述.

考虑MSSQL2005中的2个表:

案例表:

id int,
caseNo string
Run Code Online (Sandbox Code Playgroud)

活动表:

id int,
caseID int,
eventDate date/time
Run Code Online (Sandbox Code Playgroud)

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

它们与events.caseID = cases.id许多人相关联.每个案例记录有多个事件记录.我希望结果集caseNo与events.eventDate的最新/最新值一致.

提前致谢.

SQL*_*ace 5

有五种方法可以执行此操作,这些方法在此处描述:包括聚合列的相关值

如果您需要的不仅仅是日期和案例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
Run Code Online (Sandbox Code Playgroud)

否则只按ID分组并使用max作为日期

select  max(e.EventDate) as MaxEventDate,
    c.CaseNo
from
    Cases c
    join Events e on
        e.caseid = c.id 
group by c.caseNo
Run Code Online (Sandbox Code Playgroud)