sql中如何计算得到一段时间内指定日期中有多少个休息日和节假日

sql中,有两个表,A表和B表,其中:A表:B表:求解:如何计算得到A表中每一条begin到end之间有B表中多少个休息日和节假日求大神指导~~~~... sql中,有两个表,A表和B表,其中:
A表:

B表:

求解:如何计算得到A表中每一条begin到end之间有B表中多少个休息日和节假日
求大神指导~~~~
展开
 我来答
greystar_cn
2015-09-27 · 知道合伙人软件行家
greystar_cn
知道合伙人软件行家
采纳数:16407 获赞数:17260
本人主要从事.NET C#方向的技术开发工作,具有10多年的各类架构开发工作经验。

向TA提问 私信TA
展开全部
这个问题的前题是需要建立一个表(存放休息日和节假日) holidays,里面存放了所有休息日等
SQL中提供了一些日期计算函数如dateadd,可对日期进行递增操作。
基本代码如下:
declare @startdate datetime='2015-9-10'
declare @enddate datetime='2015-10-10'
declare @days int=0
set @startdate=dateadd(day,@startdate,1) --给开始日期加1天
while(@startdate<@enddate) --如果小于结束日期,一直循环处理下面
begin
IF EXISTS (SELECT * FROM holidays WHERE holiday=@startdate) --如果假日表中找到对应日期,则假日数加1
set @days=@days+1

set @startdate=dateadd(day,@startdate,1) --给开始日期加1天
end

select @days --总天数。
百度网友2dca20d
2014-11-03 · TA获得超过4036个赞
知道大有可为答主
回答量:2638
采纳率:77%
帮助的人:1034万
展开全部
SELECT A.ID,A.人员编号,A.begin,A.end,days=count(*)
FROM A JOIN B ON B.假期时间 between A.begin and A.end
group by A.ID,A.人员编号,A.begin,A.end
追问
大神 整个算是对的,那如果B表中只取请假时间中的一部分进行统计怎么得到?比如说只取10月份的。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式