簡體   English   中英

SQL 到 select 行,最近的 2 個日期

[英]SQL to select rows with the 2 most recent dates

我目前正在為一個為多家公司保存快照的數據集而苦苦掙扎。 該快照每周執行一次,但分為 2 天。 最近一天,我已經讓數據集可以使用:

Where [TRANSDATE] = (SELECT MAX(TRANSDATE) FROM QBE_INVENTDIMPHYSLOGGING)

但是我如何包括最近的 2 個日期(總是周六和周日)。 因此,如果是 8 月,那將是 8 月 20 日和 21 日,但我不能將這些日期用作硬值,因為它每周都會改變,我只想導入最近的周末。 誰能幫助解決這個問題? 提前謝謝了!

格。 戴安娜

在 SQL 服務器上,您可以使用TOP

SELECT TOP 2 *
FROM QBE_INVENTDIMPHYSLOGGING
ORDER BY TRANSDATE DESC;

如果您必須堅持使用當前的子查詢方法(順便說一句,這對於查找 1 級記錄完全沒問題),您可以使用以下方法進行擴展:

SELECT *
FROM QBE_INVENTDIMPHYSLOGGING
WHERE TRANSDATE = (SELECT MAX(TRANSDATE) FROM QBE_INVENTDIMPHYSLOGGING) OR
      TRANSDATE = (SELECT MAX(TRANSDATE)
                   FROM QBE_INVENTDIMPHYSLOGGING
                   WHERE TRANSDATE < (SELECT MAX(TRANSDATE)
                                      FROM QBE_INVENTDIMPHYSLOGGING));

如果要捕獲所有關系,請使用TOP 2 WITH TIES而不是第一個選項。 您也可以使用RANK()分析 function。

您可以使用

[TRANSDATE] IN (SELECT top 2 TRANSDATE FROM QBE_INVENTDIMPHYSLOGGING order by TRANSDATE desc)

暫無
暫無

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

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