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应该从查询中返回)一旦应用了过滤器.
试试这个:
;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)