考勤统计的问题
表: 
 部门         员工名         打卡时间                                          班次    
 a                  张三               2007-1-15   9:20                        1 
 a                  张三               2007-1-15   18:30                        2 
 a                  李四               2007-1-15   8:00                        1 
 a                  李四               2007-1-15   18:10                        2 
 b                  赵五               2007-1-15   8:00                        1 
 b                  赵五               2007-1-15   8:00                        2 
 …… 
 需要得到每月份的统计: 
 部门         员工名         上班时间                              下班时间                              时长          
    a                  张三               2007-1-15   9:20      2007-1-15   18:30      9:10 
    a                  李四               2007-1-15   8:20      2007-1-15   18:10      8:50 
 ……
------解决方案--------------------create table #(部门 varchar(10),   员工名 varchar(10),   打卡时间  datetime,             班次 int) 
 insert into # select  'a '    ,   '张三 '   ,   '2007-1-15 9:20 ' ,       1 
 union all select  'a '     ,  '张三 ',      '2007-1-15 18:30 '    ,    2 
 union all select  'a '     ,  '李四 ',      '2007-1-15 8:00 '    ,    1 
 union all select  'a '     ,  '李四 ' ,     '2007-1-15 18:10 '   ,     2 
 union all select  'b '     ,  '赵五 ' ,     '2007-1-15 8:00 '    ,    1 
 union all select  'b '     ,  '赵五 ' ,     '2007-1-15 8:00 '    ,    2   
 select 部门,员工名,上班时间=max(case when 班次=1 then 打卡时间 end),下班时间=max(case when 班次=2 then 打卡时间 end),时长=cast(datediff(hour,max(case when 班次=1 then 打卡时间 end),max(case when 班次=2 then 打卡时间 end)) as varchar)+ ': '+cast(datediff(minute,max(case when 班次=1 then 打卡时间 end),max(case when 班次=2 then 打卡时间 end)) % 60 as varchar) from # group by 部门,员工名   
 -- 
 a	李四	2007-01-15 08:00:00.000	2007-01-15 18:10:00.000	10:10 
 a	张三	2007-01-15 09:20:00.000	2007-01-15 18:30:00.000	9:10 
 b	赵五	2007-01-15 08:00:00.000	2007-01-15 08:00:00.000	0:0