请假统计SQL

请假里有:请假类别,开始时间、结束时间要求统计:在有人请假的日期中按照日期分组,统计出各个请假类别的人数张三事假2014.07.212014.07.23李四事假2014.... 请假里有:请假类别,开始时间、结束时间
要求统计:在有人请假的日期中按照日期分组,统计出各个请假类别的人数
张三 事假 2014.07.21 2014.07.23
李四 事假 2014.07.22 2014.07.24
王武 病假 2014.07.23 2014.07.24

时间(从请假开始结束时间得出) 事假 病假
2014.07.21 1人 0人
2014.07.22 2人 0人
2014.07.23 2人 1人
2014.07.24 1人 1人
展开
 我来答
badkano
推荐于2016-06-16 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885373
团长

向TA提问 私信TA
展开全部

没说什么数据库,sqlserver为例

创建测试表

create table test
(姓名 varchar(10),
事由 varchar(10),
开始时间 datetime,
结束时间 datetime)

insert into test values ('张三','事假','2014-07-21','2014-07-23')
insert into test values ('李四','事假','2014-07-22','2014-07-24')
insert into test values ('王武','病假','2014-07-23','2014-07-24')

执行

select t.时间,
sum(case when t.事由='病假' then 1 else 0 end) 病假,
sum(case when t.事由='事假' then 1 else 0 end) 事假
from
(select a.姓名,a.事由,a.开始时间+b.number 时间
from test a,
(select number from master..spt_values 
where type='P' and number<=(select max(DATEDIFF(DAY,开始时间,结束时间)) from test)) b
where DATEDIFF(DAY,a.开始时间,a.结束时间)>=b.number) t
group by t.时间

结果

红S桃
2014-07-29 · 超过44用户采纳过TA的回答
知道小有建树答主
回答量:128
采纳率:100%
帮助的人:69万
展开全部
SELECT 请假日期,请假类别,count(*)
FROM 员工表 A,请假表 B
WHERE A.请假日期 >=B.开始日期 AND A.请假日期 <=B.结束日期
GROUP BY A.日期,B.请假类别;
张三请假如果10天,应该对时间有个遍历,查询每一天的请假人数,这个最好java,php完成,对每一天请假的运用上面的查询,依次输出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
csliang34
2014-07-28 · TA获得超过120个赞
知道答主
回答量:34
采纳率:0%
帮助的人:17.4万
展开全部
select 日期,请假类别,count(*)
from 表
group by 日期,请假类别
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式