求一条关于考勤的SQL话语
求一条关于考勤的SQL语句
有一张表:
ID 姓名 考勤时间
1 张三 2013-7-1 7:40
1 张三 2013-7-1 7:42
1 张三 2013-7-1 11:40
1 张三 2013-7-2 18:40
1 张三 2013-7-2 7:50
1 张三 2013-7-2 11:50
1 张三 2013-7-2 18:10
2 李四 2013-7-1 7:40
2 李四 2013-7-1 11:40
2 李四 2013-7-2 18:40
2 李四 2013-7-2 7:50
2 李四 2013-7-2 18:10
3 王五 2013-7-1 8:40
3 王五 2013-7-1 11:40
3 王五 2013-7-2 17:40
3 王五 2013-7-2 7:50
3 王五 2013-7-2 12:00
其中考勤时间7点到9点为早餐时间,11点到13点为中餐时间,17点到19点为晚餐时间
我想统计出张三,李四,王五个人在7月份中,早餐,中餐,晚餐的考勤情况,其中重复打卡记录过滤,例如张三在7月1日早餐出现两次打卡只取一次,即得出下表:
姓名 早餐 中餐 晚餐
张三 2 2 2
李四 2 1 2
王五 2 2 1
------解决方案--------------------
有一张表:
ID 姓名 考勤时间
1 张三 2013-7-1 7:40
1 张三 2013-7-1 7:42
1 张三 2013-7-1 11:40
1 张三 2013-7-2 18:40
1 张三 2013-7-2 7:50
1 张三 2013-7-2 11:50
1 张三 2013-7-2 18:10
2 李四 2013-7-1 7:40
2 李四 2013-7-1 11:40
2 李四 2013-7-2 18:40
2 李四 2013-7-2 7:50
2 李四 2013-7-2 18:10
3 王五 2013-7-1 8:40
3 王五 2013-7-1 11:40
3 王五 2013-7-2 17:40
3 王五 2013-7-2 7:50
3 王五 2013-7-2 12:00
其中考勤时间7点到9点为早餐时间,11点到13点为中餐时间,17点到19点为晚餐时间
我想统计出张三,李四,王五个人在7月份中,早餐,中餐,晚餐的考勤情况,其中重复打卡记录过滤,例如张三在7月1日早餐出现两次打卡只取一次,即得出下表:
姓名 早餐 中餐 晚餐
张三 2 2 2
李四 2 1 2
王五 2 2 1
------解决方案--------------------
create table #tb(id int,name varchar(10),ktime datetime)
insert into #tb(id,name,ktime)
select 1 ,'张三' ,'2013-07-01 7: 40'
union all select 1,'张三','2013-07-01 7: 42'
union all select 1,'张三','2013-07-01 11: 40'
union all select 1,'张三','2013-07-02 18: 40'
union all select 1,'张三','2013-07-02 7: 50'
union all select 1,'张三','2013-07-02 11: 50'
union all select 1,'张三','2013-07-02 18: 10'
union all select 2,'李四','2013-07-01 7: 40'
union all select 2,'李四','2013-07-01 11: 40'
union all select 2,'李四','2013-07-02 18: 40'
union all select 2,'李四','2013-07-02 7: 50'
union all select 2,'李四','2013-07-02 18: 10'