-----------------------------------------------
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/