需要在一次查询中生成“11-30-2014”之前的日历列表。但不是所有的日子,只有工作日(周一至周五),节假日除外。节假日存储在holidays
表中。oracle DB中的特殊表dual
用于生成。
SELECT to_date(current_date + level-1,'MM-DD-YY') as Calendar
FROM dual, holidays
WHERE to_date(current_date,'MM-DD-YY')+level-1 <= to_date('11-30-14','MM-DD-YY')
AND to_char(to_date(current_date,'MM-DD-YY')+level-1,'D') NOT IN (6,7)
CONNECT BY level <= 365
MINUS
SELECT to_date(data,'MM-DD-YY')
FROM holidays;
我这样做了,但我觉得这个案例可以用 4 行来完成。更简单。如果有人知道如何使这更容易,那么谢谢!