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