这次我以为我弄明白了;但是我的大脑怎么解释这个呢。不,为此,我需要专家。
根据Jeff Atwood A Visual Explanation of SQL Joins左外连接从表A中生成一组完整的记录,其中包含表B中的匹配记录(如果可用)。
SELECT R.[Computer]
,L.[User]
,L.MaxDate
,R.[Notes]
,R.[ID]
From (
SELECT [User], max([StartDate]) as MaxDate
FROM <Table1>
Group by [User]
) As L
Left Outer Join <Table1> as R --Self join
on L.MaxDate = R.StartDate
左侧的MaxDate始终只为每个用户返回一个日期。这应该与右侧的一个匹配行匹配。或者我想。我为每个日期和用户收到多个项目。
此处的目的是使用MaxDate返回每个用户的所有列,以获取每个用户的最新日期。由于日期是唯一的,我应该只为每个用户获得一行,但我得到几个。
如何根据on L.MaxDate = R.StartDate
将结果集限制为单个匹配行?
答案 0 :(得分:1)
如果为多个用户找到相同的StartDate,则会从R获得多个匹配项。将用户添加到您的加入条件。