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