使用最大日期查询SQL distinct字段,返回表中的所有字段

lid*_*min 1 sql t-sql sql-server sql-server-2008

我很难尝试一个听起来很简单的查询.我正在使用SQL Server 2008.

我有这张桌子:

ID  Name  Date        Zone
----------------------------
01  AAA   01/01/2010  North
02  BBB   02/02/2010  South
03  AAA   05/01/2010  West 
Run Code Online (Sandbox Code Playgroud)

因此,我需要过滤表以获取不同的项目(按名称),但是,如果项目重复,请获取具有最大日期的项目.以下是我想从上面的例子中得到的结果:

ID  Name  Date        Zone
----------------------------
02  BBB   02/02/2010  South
03  AAA   05/01/2010  West 
Run Code Online (Sandbox Code Playgroud)

问题是我需要从表中获取所有字段(我的意思是:Id,Name,Date和Zone应该从查询中返回)一旦应用了过滤器.

Lam*_*mak 6

试试这个:

;WITH CTETable AS
(
    SELECT *, ROW_NUMBER() OVER(PARTITION BY Name ORDER BY [Date] DESC) ID
    FROM YourTable
)

SELECT *
FROM CTETable
WHERE ID = 1
Run Code Online (Sandbox Code Playgroud)