首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

偏题:怎样每天抽取一条记录并分类统计

2013-03-16 
难题:怎样每天抽取一条记录并分类统计有两张表:一、员工信息表:员工ID姓名班组1张三12李四13王二2...二、打

难题:怎样每天抽取一条记录并分类统计
有两张表:
一、员工信息表:
   员工ID  姓名  班组
    1     张三   1
    2     李四   1
    3     王二   2
    ...

二、打卡记录表,存放员工打卡记录,共有4个不同类型的打卡机
   员工ID  打卡时间           打卡机号
     1    2012-2-1 8:00      1
     2    2012-2-1 9:00      1
     1    2012-2-1 9:00      1
     3    2012-2-1 8:00      2
     ...
这里有个难题,每人每天在某种型号的打卡机上打卡只能算一次,

要求将某段时间内的打卡记录统计成这样:
    班组    员工姓名    1号机打卡次数   2号机打卡次数  3号机打卡次数   4号机打卡次数
     1      张三           ..            ..           ..           ..
     1      李四           ..            ..           ..           ..
     2      王二           ..            ..           ..           ..
     ...

分不多不好意思,纠结了很久实在想不出来!
[解决办法]

----------------------------
-- Author  :TravyLee(两情若是久长时,又岂在朝朝暮暮!)
-- Date    :2013-03-11 13:19:25
-- Version:
--      Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64) 
--Jul  9 2008 14:17:44 
--Copyright (c) 1988-2008 Microsoft Corporation
--Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
--
----------------------------
--> 测试数据:[a]
if object_id('[a]') is not null 
drop table [a]
go 
create table [a]
(
[员工ID] int,
[姓名] varchar(4),
[班组] int
)
insert [a]
select 1,'张三',1 union all
select 2,'李四',1 union all
select 3,'王二',2
--> 测试数据:[b]
if object_id('[b]') is not null 
drop table [b]
go 
create table [b]
(
[员工ID] int,
[打卡时间] datetime,
[打卡机号] int
)
insert [b]


select 1,'2012-2-1 8:00',1 union all
select 2,'2012-2-1 9:00',1 union all
select 1,'2012-2-1 9:00',1 union all
select 3,'2012-2-1 8:00',2
go
select
a.班组,
a.姓名,
sum(case when b.打卡机号=1 then 1 else 0 end) as [1号机打卡次数],
sum(case when b.打卡机号=2 then 1 else 0 end) as [2号机打卡次数],
sum(case when b.打卡机号=3 then 1 else 0 end) as [3号机打卡次数],
sum(case when b.打卡机号=4 then 1 else 0 end) as [4号机打卡次数]
from
a
inner join
b
on
a.[员工ID]=b.[员工ID]
group by
a.班组,
a.姓名
/*
班组姓名1号机打卡次数2号机打卡次数3号机打卡次数4号机打卡次数
-------------------------------------------------------
1李四1000
1张三2000
2王二0100
*/

热点排行