我有一个具有多个身份值的表,我想为每个身份找到一行,其中日期字段是最新的,然后如果仍然有重复,只需选择id最低的那一行。 / p>
我的表看起来像是这样的:
UniqueID | CustomerId | Name | Address | InspDate
1 1 Bob 123 2013/08/05 00:00:00
2 1 Bob 123 2013/08/05 00:00:00
3 1 Bob 123 2013/03/01 00:00:00
所以我只希望uniqueid为1的行显示在此示例中。
此外,我想将其限制为仅在过去一年内完成激励的客户,如果可能的话。
答案 0 :(得分:0)
SELECT t.*
FROM
yourtable t INNER JOIN (
SELECT MIN(UniqueID) as Min_ID
FROM
yourtable t1 INNER JOIN (SELECT CustomerID, MAX(InspDate) Max_date
FROM yourtable
GROUP BY CustomerID) m
ON t1.CustomerID=m.CustomerID AND t1.InspDate=m.Max_date
GROUP BY t1.CustomerID) mi
ON t.UniqueID = mi.Min_ID
请参阅小提琴here。