根据日期字段从数据集中获取最新数据
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)
这看起来很容易,但我做不到。假设此数据集:
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)