根据日期字段从数据集中获取最新数据

Getting the most recent data from a dataset based on a date field

这看起来很容易,但我做不到。假设此数据集:

ID  SID AddDate
1   123 1/1/2014
2   123 2/3/2015
3   123 1/4/2010
4   124 
5   124 
6   125 2/3/2012
7   126 2/2/2012
8   126 2/2/2011
9   126 2/2/2011

我需要的是最新的 AddDate 和每个 SID 的关联 ID。

因此,我的数据集应该 return ID 2、5、6 和 7

我尝试执行 max(AddDate),但它不会给我与之关联的正确 ID。

我的SQL字符串:

SELECT First(Table1.ID) AS FirstOfID, Table1.SID, Max(Table1.AddDate) AS MaxOfAddDate
FROM Table1
GROUP BY Table1.SID;

您可以更改您的查询以先获取分组,然后执行 JOIN like

SELECT First(Table1.ID) AS FirstOfID, 
Table1.SID, xx.MaxOfAddDate
FROM Table1 JOIN (
SELECT ID, Max(AddDate) AS MaxOfAddDate
FROM Table1
GROUP BY SID) xx ON Table1.ID = xx.ID;

您可以使用 returns 每个 Sid 的最大添加日期的子查询,然后您可以将此子查询连接回数据集 table:

SELECT
  MAX(id)
FROM
  ds INNER JOIN (
    SELECT Sid, Max(AddDate) AS MaxAddDate
    FROM ds
    GROUP BY ds.Sid) mx
  ON ds.Sid = mx.Sid AND (ds.AddDate=mx.MaxAddDate or MaxAddDate IS NULL)
GROUP BY
  ds.Sid

如果 MaxAddDate 为 NULL(没有 AddDate),连接仍然必须成功,并且如果有多个 ID 匹配,看起来你想要最大的一个。

尝试

select SID from table1 
where addDate in (select max(addDate) from Table1)