[英]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.