标题可能没什么意义,所以我会尝试在这个主题中描述。
考虑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的最新/最新值。
提前致谢。
答案 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