从工作日列表中确定上一个营业日期

时间:2013-11-06 15:20:17

标签: sql database vba access-vba

我需要编写一个sql查询,根据工作日列表确定上一个工作日。

我需要与此工作日列表进行比较,因为它需要考虑独特的商务假期(否则我只会使用VBASQL WORKDAY函数)。

期望的输出在第3个样本表中;我需要从中得到的表是第2个。

我该怎么做?

例如

table1.StartingDate
----------
20131105
20131104

BusinessDayTable.Date
----------
20131105
20131104
20131101

OutputTable.StartingDate | OutputTable.PrevBusDate
-------------------------|------------------------
20131105                 | 20131104
20131104                 | 20131101

1 个答案:

答案 0 :(得分:1)

有几种不同的方法:

加入:

 Select t.StartingDate, Max(b.Date) EndDate
 from table1 t
     left Join BusinessDayTable b
         On b.Date < t.StartingDate
 Group By t.StartingDate -- group by is necessary because 
                         -- `StartingDate` is in select clause.

在加入条件下使用SubQuery:

 Select startingDate, b.Date EndDate
 from table1 t
     left Join BusinessDayTable b
         On b.Date = (Select Max(b.Date)
                      From BusinessDayTable 
                      Where Date < t.StartingDate)

或选择中的SubQuery:

 Select startingDate, 
   (Select Max(Date) 
    from BusinessDayTable 
    Where Date < t.StartingDate) EndDate
 from table1 t