sql - 如何从cell中获取每个满足条件的人的最新数据?

标签 sql sql-server

我有一个像这样的表:

Name    Type   Date     Value
-------------------------------- 
Emilia  1   2010-11-02  10
Eva     0   2009-07-05  11
Monica  1   2010-04-22  12
Emilia  0   2011-07-12  13
Monica  1   2012-05-01  14
Eva     1   2006-02-12  15
Monica  0   2004-12-12  16
Emilia  1   2005-11-11  17
Eva     1   2014-02-01  18
Emilia  1   2015-03-11  19
Monica  0   2002-11-28  20

我需要一个表格,显示最近日期具有类型 1 的所有女性的列表,以及该日期的值。所以我要查询的表应该如下所示:

Name   Value
------------
Emilia 19
Eva    18

所以基本上我需要它来查看每个人的最新日期是多少,然后检查类型是否为 1,如果是,我需要显示 Value 列中的数据。

请帮助我,因为我不知道该怎么做。

最佳答案

使用ROW_NUMBER窗口函数来执行此操作。

:with CTE as
(
select *,Row_Number() over(partition by Name order by [Date] desc) RN
From Yourtable
)   
select Name,Value from cte 
where RN=1 and Type = 1

关于sql - 如何从cell中获取每个满足条件的人的最新数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28983022/

相关文章:

sql - 循环遍历存储过程结果以创建字符串

mysql - 将每一对行合并到一个 MYSQL 中

java - Hibernate 命名查询或 SQL Server 存储过程

sql-server - 在位置索引中查找二元组

java - SQLException : Incorrect syntax near 'bit'

java - sqljdbc4.jar - 无法连接到 MSSQL 服务器实例 - SSL 错误?

java - 更新一行mysql表

java - 尝试在 OfBiz 中保存任务时收到 FK 违规错误

mysql - 根据当前时间创建 View (MySql)

sql-server - SQL Try Catch 在存储过程中 - 我这样做对吗?