1

我有一个包含两个日期字段的表(下面的示例中的日期 1 和日期 3)。我还有一个假期表,列出了所有的假期。我想在 SQL 查询中找到一种方法来计算两个日期值之间的假期数。有任何想法吗?

示例表:

日期 1 日期 2
2012 年 5 月 1 日 2012 年 5 月 4 日
2012 年 8 月 31 日 2012 年 9 月 25 日
2011 年 12 月 23 日 2011 年 12 月 27 日

日期维度表示例:

假期日期

2011 年 12 月 25 日
2012 年 1 月 1 日
2012 年 7 月 4 日
2012 年 9 月 3 日

理想输出:

日期 1 日期 2 节假日
2012 年 5 月 1 日 2012 年 5 月 4 日 0
2012 年 8 月 31 日 2012 年 9 月 25 日 1
2011 年 12 月 23 日 2012 年 1 月 10 日 2
4

2 回答 2

1

像这样的东西:

SELECT count (holidays.date) AS holiday_count
FROM holidays, table
WHERE holidays.date BETWEEN table.date_1 AND table.date_2
于 2012-10-09T15:55:17.510 回答
1

以下应该做到这一点:

select date1, date2, t.total
from datestable, (select count(*) as total 
                  from holidaystable 
                  inner join datestable 
                  on holidaydate between date1 and date2) t;
于 2012-10-09T16:17:52.730 回答