我把问题抽象如下简单模型:
现有两表a
姓名 工作 时间 工作量
张三 扫地 2005.05.01 一间
李四 扫地 2005.05.06 二间
王五 洗碗 2005.05.08
b表
工作 分数
扫地 一间1分,二间1.5
洗碗 3
如果要统计2005年6月份所有人员的积分表,如下:
姓名 积分
张三 60
李四 30
谢谢!~~~
现有两表a
姓名 工作 时间 工作量
张三 扫地 2005.05.01 一间
李四 扫地 2005.05.06 二间
王五 洗碗 2005.05.08
b表
工作 分数
扫地 一间1分,二间1.5
洗碗 3
如果要统计2005年6月份所有人员的积分表,如下:
姓名 积分
张三 60
李四 30
谢谢!~~~
工作 分数
扫地 一间1分,二间1.5
洗碗 3
b表你这样设计????应该是这样吧
b表
工作 工作量 分数
扫地 一间 1
扫地 二间 1.5
洗碗 3
select a.姓名,sum(b.积分) as 积分 from a
join b
on a.工作=b.工作
where a.工作量=b.工作量
and 时间 between '2005-06-01' and '2005-06-30'
group by a.姓名
select '张三', '扫地', '2005-05-01', '一间'
union all select '李四', '扫地', '2005-05-06', '二间'
union all select '王五', '洗碗', '2005-05-08', ''
union all select '张三', '洗碗', '2005-05-09', ''
create table b (gongzuo varchar(6),gongzuoliang varchar(6),fenshu numeric(4,1))insert b
select '扫地', '一间',1
union all select '扫地', '二间',1.5
union all select '洗碗', ' ',3select a.name,sum(case when a.gongzuo=b.gongzuo and a.gongzuoliang=b.gongzuoliang
then b.fenshu end) as jifen from a,b group by a.name
then b.fenshu end) as jifen from a,b
where a.time between '2005-05-01' and '2005-05-31'
group by a.name
表a
员工编号 姓名
0001 张三
表b
工作编号 工作 分数
0000001 扫地一间 1
0000002 扫地两间 1.5
0000003 洗碗 3
表c
员工编号 工作编号 时间
0001 0000001 2005.05.01
表a
ID 员工编号 姓名
1 0001 张三
2 0002 李四
3 0003 王五
表b
ID 工作编号 工作 分数
1 0000001 扫地一间 1
2 0000002 扫地两间 1.5
3 0000003 洗碗 3
表c
员工ID 工作ID 时间
1 1 2005.05.01
2 2 2005.05.06
3 3 2005.05.17