1
SELECT AnotherID, TID, TDate, COUNT(*) AS Total
FROM MyTable
GROUP BY TID
HAVING Total > 1

上述查询返回多条记录具有相同 TID 的记录。现在我需要选择最新的日期。

上面的查询返回TDate但它不是最新的,基本上我需要按 TID 分组并获取TDate最新的记录。我只需要获取多个记录具有相同TID的那些记录。

注意:不能使用 MAX(TDate),因为它没有选择正确的AnotherID字段

4

1 回答 1

2

假设TDate是数据类型dateor datetime,那么MAX(TDate)将为您提供每个分组的最新日期TID

SELECT t1.AnotherId, t1.TID, t2.MaxTDate, t2.Total
FROM MyTable AS t1
INNER JOIN
(
   SELECT TID, MAX(TDate) AS MaxTDate, COUNT(*) AS Total
   FROM MyTable 
   GROUP BY TID
   HAVING Total > 1
) AS t2  ON t1.TID   = t2.TID
        AND t1.TDate = t2.MaxTDate;
于 2013-03-25T14:33:49.423 回答