sql - 如何在 T-SQL 中打印最新的一行?

标签 sql sql-server t-sql sql-server-2008

-----------------------------------------------
Value     ISRepeat    Changed
------------------------------------------------
666-66-8888 NULL    2011-10-19 15:28:47.310
555-55-6666 NULL    2011-10-19 15:27:26.413
444-44-5555 NULL    2011-10-19 15:25:02.660
333-33-4444 NULL    2011-10-19 15:23:57.120
222-22-3333 NULL    2011-10-19 15:13:57.903
222-22-2222 NULL    2011-10-19 15:13:03.517
100-10-2222 NULL    2011-10-19 15:07:52.010
100-10-1111 NULL    2011-10-19 15:06:59.690

我有一张这样的 table 。我想打印该值

555-55-6666 NULL    2011-10-19 15:27:26.413

这是表中基于时间(更改列)的最后一行...条件是最近值之前的时间。我怎样才能做到这一点?

最佳答案

最近时间是通过以下方式找到的:

SELECT MAX(Changed) AS most_recent FROM AnonymousTable

您希望最大时间小于此的行:

SELECT MAX(Changed) AS second_latest
  FROM AnonymousTable
 WHERE Changed < (SELECT MAX(Changed) AS most_recent FROM AnonymousTable)

因此,您选择相关行:

SELECT *
  FROM AnonymousTable
 WHERE Changed =
       (SELECT MAX(Changed) AS second_latest
          FROM AnonymousTable
         WHERE Changed < (SELECT MAX(Changed) AS most_recent FROM AnonymousTable)
       )

可能有一种更简洁的方法来做到这一点,但这种技术不能很好地推广到第三或第四个最新值。 OLAP 功能很可能会有所帮助。

关于sql - 如何在 T-SQL 中打印最新的一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7830668/

相关文章:

Mysql - 获取没有先前状态的行

SQL左连接错误

sql-server - 使用 PowerShell 脚本复制 SQL Server 数据库

sql - MS SQL 如何用单个值更新多行?

sql - 如何在 max() 命令返回的记录中选择另一条数据

java - Hibernate 和 PostgreSQL - 检查 setParameterList 中传递的集合是否为空

sql - Spark sql 查询与数据帧函数

sql - "OBJECT_NAME"函数不再返回对象的名称

sql-server - 将日期转换为 varchar,然后将其转换回日期

c# - 将 NULL 日期时间值从 T-SQL 返回到 C# DataTable ==> DataRow 而不是空字符串