我把问题抽象如下简单模型:
现有两表a
姓名  工作  时间           工作量
张三  扫地  2005.05.01     一间
李四  扫地  2005.05.06     二间
王五  洗碗  2005.05.08     
b表
工作   分数
扫地    一间1分,二间1.5
洗碗    3
如果要统计2005年6月份所有人员的积分表,如下:
姓名  积分
张三  60
李四  30

谢谢!~~~

解决方案 »

  1.   

    b表
    工作   分数
    扫地    一间1分,二间1.5
    洗碗    3

    b表你这样设计????应该是这样吧
    b表
    工作   工作量  分数
    扫地    一间    1
    扫地    二间    1.5
    洗碗            3
      

  2.   

    建立视图,SUM(...) GROUP BY...
      

  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.姓名
      

  4.   

    create table a (name varchar(5),gongzuo varchar(6),time datetime,gongzuoliang varchar(6))insert  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
      

  5.   

    select a.name,sum(case when a.gongzuo=b.gongzuo and a.gongzuoliang=b.gongzuoliang
    then b.fenshu end) as jifen from a,b 
    where a.time between '2005-05-01' and '2005-05-31'
    group by a.name
      

  6.   

    同意 geniusqing(依帆) 的只不过把日期改为6月份的。
      

  7.   

    你整个数据结构的设计就问题,如果你每个表都用字符去查找,这样数据量大了就会影响你的查询速度。
    表a
    员工编号  姓名
      0001    张三  
    表b
    工作编号   工作     分数
    0000001   扫地一间    1
    0000002   扫地两间    1.5
    0000003    洗碗       3
    表c
    员工编号  工作编号      时间 
     0001     0000001    2005.05.01
      

  8.   

    呵呵,不要用前面那个用下面这个
    表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