我如何返回数据的所有行从最小日期到下一个可能的日期后的当前日期在日期列?



考虑一个包含多行日期的表:

Date
------   
5/9/2022  
5/27/2022  
4/18/2022  
6/2/2022  
7/1/2022  
6/6/2022  
7/8/2022  
7/6/2022  
7/22/2022  
7/19/2022  
7/11/2022

当前查询返回所有行DATE <= GETDATE()+1因此,它将返回所有日期<=7/9/2022,而实际上需要返回<=7/11/22。这篇专栏文章的日期从来不落在周末或假日。因此,在像星期五这样的日子里,查询应该尝试将所有行<=拉到即将到来的星期一(列或工作日中的下一个日期)。这个查询也有多个where条件。WHERE (_Header.CODE IN ('10', '15')) AND (_Header.LOCATION = '89') AND (_Header.OR_NO > '0') AND (_Header.DATE <= GETDATE()+1)

这将在日期字段中显示今天之后的第二天。它是一个可以在查询中使用的简单的公共表表达式。您只需将所有日期<=从cte中检索到的日期。

with cte(nextDay)
AS (SELECT TOP 1 cal_date FROM calendar 
WHERE cal_date > GETDATE() 
ORDER BY cal_date)
SELECT * FROM cte

最新更新