0

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

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

所需的输出在第三个样本表中;我需要从中导出的表是前 2 个。

我该怎么做?

例如

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

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

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

1 回答 1

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.

在加入条件下使用子查询:

 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)

或在 Select 中使用 SubQuery:

 Select startingDate, 
   (Select Max(Date) 
    from BusinessDayTable 
    Where Date < t.StartingDate) EndDate
 from table1 t
于 2013-11-06T15:25:17.727 回答