我需要编写一个sql查询,根据工作日列表确定上一个工作日。
我需要与此工作日列表进行比较,因为它需要考虑独特的商务假期(否则我只会使用VBASQL WORKDAY函数)。
期望的输出在第3个样本表中;我需要从中得到的表是第2个。
我该怎么做?
例如
table1.StartingDate
----------
20131105
20131104
BusinessDayTable.Date
----------
20131105
20131104
20131101
OutputTable.StartingDate | OutputTable.PrevBusDate
-------------------------|------------------------
20131105 | 20131104
20131104 | 20131101
答案 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