我有一个数据集(在本例中是查询),类似于这样:
ZipCode Territory Date
----------------------------------
12345 Unknown 9/30/2015
12345 Unknown 9/25/2015
12345 Istanbul 9/20/2015
12345 Istanbul 9/10/2015
12345 Unknown 9/5/2015
12345 Istanbul 8/31/2015
12345 Istanbul 8/21/2015
12345 Unknown 8/16/2015
12345 Constantinople 8/11/2015
12345 Constantinople 8/1/2015
12345 Constantinople 7/22/2015
12345 Constantinople 7/12/2015我想返回每个邮政编码的最大日期和已知的区域名称(每邮政编码一行)。我希望从上一次查询中得到的最终结果将变成如下:
ZipCode Territory Date
----------------------------------
12345 Istanbul 9/20/2015我目前最大的努力只让我来到这里:
ZipCode Territory Date
---------------------------------
12345 Istanbul 9/20/2015
12345 Constantinople 8/11/2015帮助!这在我的SQL写作能力上是一个巨大的差距。
发布于 2015-10-20 07:25:35
你需要问两个问题。
检索最大日期的第一个。
SELECT Zipcode, Max([Date]) AS MaxDate FROM <TableName> Group BY Zipcode让我们将这个查询保存为qryMaxDateForZipCode
第二个查询领土的日期。
SELECT ZipCode, Territory FROM qryMaxDateForZipCode
INNER JOIN <TableName> ON qryMaxDateForZipCode.MaxDate = <TableName>.[Date]不过,您可能有两个地区资格的最大日期。那你想做什么?
发布于 2015-10-20 05:00:17
这本质上是一个每组最多的问题。按邮政编码分组数据,以获取每个邮政编码的最新日期。然后将邮政编码-最新的日期对与您的数据匹配:
SELECT YourTable.*
FROM YourTable
INNER JOIN (
SELECT ZipCode, MAX(Date) AS Date_Max
FROM YourTable
WHERE Territory <> 'Unknown'
GROUP BY ZipCode
) AS TempGroup ON
YourTable.ZipCode = TempGroup.ZipCode
AND YourTable.Date = TempGroup.Date_Max结果(在MS-Access 2007中测试):
ZipCode Territory Date
----------------------------------
12345 Istanbul 9/20/2015发布于 2015-10-20 04:43:50
这可能会有帮助:
Select ZipCode, MAX(Territory), Max([Date]) AS [Date]
Group By ZipCodehttps://stackoverflow.com/questions/33228058
复制相似问题