我有一个名为 CampRegistration 的表,其结构如下:
[EID] INT, [CampName] VARCHAR(100), [StartDt] DATETIME
EID 是参加营地的人的标识符。我希望选择 CampRegistration 表中每个人在给定日期之前参加的最后一个营地。
这是我的第一次尝试:
@DECLARE @currentCampDt DATETIME = '2012-8-4';
SELECT [EID], [CampName], MAX([StartDt]) [StartDt]
FROM [CampRegistration]
WHERE [StartDt] < @currentCampDt
GROUP BY [EID],[CampName]
order by [EID]
这里的问题是,如果有人参加了多个不同名称的营地,我会得到那个人的多个结果(每个营地名称的最后参加者)。我只希望为每个人找回一个记录,他们参加的任何名字的最后一个营地。我最终确实需要为每条记录(EID、CampName 和营地的 StartDt)获取这三条信息,所以我不确定我是否真的可以从Group By
.
我正在使用 SQL Server 2012,非常感谢有关如何实现此类查询结果的任何建议。
谢谢。