繁体   English   中英

SQL查询从两个日期列获取工作日

[英]SQL query get business days from two date columns

我有两列的sql表。 一列名为dateUpdated,另一列名为dateReported。 我希望创建第三列,其中每一行都包含介于dateUpdated和dateReported之间的工作日的整数值。 dateUpdated将始终是dateReported值之后或之日的日期。 例如,该表可能如下所示:

DATE UPDATED   Date Reported
2015-06-23     2015-06-02
2015-06-05     2015-06-04
2015-06-23     2015-06-15
2015-06-17     2015-06-04
2015-06-23     2015-06-27
2015-06-23     2015-06-04
2015-06-08     2015-06-04

第三列应该是每行两列之间的工作日数。 我当前的SQL看起来像这样

select date(time_of_update) as updated, 
rep.date_reported as dateReported
from history hist left join reports rep
on hist.name = rep.name
left join calendar cal 
on rep.date_reported = cal.calendar_date;

我的日历表有一个包含所有日期的列以及一个关联列,用于标记是否为工作日。 例如,我可以运行类似

select sum(is_business_day) from calendar where 
calendar_date between '2015-06-02' and '2015-06-23';

我会得到16天 我想知道如何合并这两部分,以便获得前面提到的两列以及第三列。

如果这是唯一的方法,则可以接受子查询。 谢谢!

如果dt_tbl是具有dateUpdated和dateReported的表,而calendar是您的日历日期表,则执行以下操作:

select
 a.dateUpdated
, a.dateReported
, sum(is_business_day) num_business_days
from
 dt_tbl a
left join
 calendar c on c.calendar_date between a.dateReported and a.dateUpdated
group by
 a.dateUpdated
, a.dateReported

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM