sql - MSSQL - 选择表中最新出现的几行

标签 sql sql-server tsql

所以,我正在用头撞墙…… 我有一个表(有几百万行),看起来像这样:

ID  Time            Area    Name
1   2017-01-01 01:42    21  Test
1   2017-01-02 02:13    21  Test
1   2017-02-01 12:45    30  N/A
1   2017-03-12 02:23    41  N/A
2   2017-02-15 04:25    20  N/A

我想运行一个查询来选择某个 ID 的最新出现的区域; 结果是这样的:

ID  Time            Area    Name
1   2017-01-02 02:13    21  Test
1   2017-02-01 12:45    30  N/A
1   2017-03-12 02:23    41  N/A

select max(Time),
"of every area"
from TABLE
where ID = 1

如果有人能给我线索,那就太棒了!

最佳答案

另一个选项(无子查询和/或额外字段)

示例

 Select Top 1 with Ties *
  From  YourTable
  Where ID =1
  Order By Row_Number() over (Partition By Area Order By [Time] Desc)

返回

ID  Time                     Area   Name
1   2017-01-02 02:13:00.000  21     Test
1   2017-02-01 12:45:00.000  30     N/A
1   2017-03-12 02:23:00.000  41     N/A

关于sql - MSSQL - 选择表中最新出现的几行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46772978/

相关文章:

sql - 同一列的多个 WHERE 子句

sql - SQL Server 数据透视表中为空?

MySQL 按字符串聚合

SQL 约束名称

sql - 计算有序数组中节点之间的总距离

SQL Server case when 和 group by 在没有行返回时返回一个值

java - Jenkins SQLServer 选择参数 - 从数据库中检索数据

sql - 嵌套 SQL 语句但在内部语句中重用变量?

sql - SQL Server 中是否有像 .NET 中的 Math.Max 一样接受两个值的 Max 函数?

sql - 将字符串中的 int 转换为 T-SQL 中的整数