簡體   English   中英

我如何在T-SQL中打印最新但一行的內容?

[英]How do I print latest but one row in T-SQL?

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

我有一張這樣的桌子。 我想打印值

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

這是基於TIME(已更改列)的表中的最后一行,但最后一行。...條件是最新值之前的時間。 我怎樣才能做到這一點?

最近時間是通過以下方式找到的:

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功能很有可能會有所幫助。

嘗試這個:

select top 1 *
from YourTable
where Changed not in
(
    select max(Changed)
    from YourTable
)
order by Changed desc

要么:

select *
from
(
    select ROW_NUMBER() over (order by Changed desc) as row_num,
        *
    from YourTable
) a
where row_num = 2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM