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

时间:2009-07-20 16:09:34

标签: sql sql-server sql-server-2005

标题可能没什么意义,所以我会尝试在这个主题中描述。

考虑MSSQL2005中的2个表:

案例表:

id int,
caseNo string

活动表:

id int,
caseID int,
eventDate date/time

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

他们与events.caseID = cases.id多人相关/加入。每个案例记录有多个事件记录。我希望结果集是单个caseNo,其中包含events.eventDate的最新/最新值。

提前致谢。

2 个答案:

答案 0 :(得分: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分组并使用max for date

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

答案 1 :(得分: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