表大概是这样的 
ljcode    零件编号
ljname    零件名称
ddate     生产日期
scnumber  生产数量
pcode0    人员编号0    参加工作的人员编号
pname     人员姓名0
pcode1    人员编号1
pname1    人员姓名1Ljcode   ljname     ddate        SCnumber    pcode0  pname0   pcode1    pname1
001      零件1      2004-10-01    100         1001    张三     Null      null
002      零件2      2004-10-02    101         1001    张三     1002      李四
001      零件1      2004-10-01    150         1002    李四     Null      null
002      零件2      2004-10-05    50          1001    张三     Null      null我要的是能统计出每个人当月每天生产零件数量(所有零件的生产数量的和) 结果应该是
姓名        1    2     3    4    5    6    7   8
张三       100  101    0    0    50   0    0   0
李四       150  101    0    0    0    0    0   0

解决方案 »

  1.   

    人员编号不是已经给出了吗?  pcode0,pcode1,pname0,pname1
      

  2.   

    transform sum(scnumber) as 每月完成数量
    select pname0,sum(scnumber) as 合计
    from tableName
    group by pname0
    pivot  month(ddate);
      

  3.   

    transform sum(scnumber) as 每月完成数量
    select pname0 as 员工姓名
    from tableName
    group by pname0
    pivot month(ddate);
      

  4.   

    如果是 Access 数据库,可以用交叉表向导得到类似行者那样的 SQL 语句。行者的还有点问题,就是数据为 0 的月不会列出。最后,你的表不大合理,每条记录中不要包含多个加工的员工。这样给处理带来许多麻烦。另,表示员工有代码或姓名之一足矣。如果用代码,则需要另一员工表给出姓名。
      

  5.   

    建议你用 Access 的交叉表查询向导自己做一次,这样就明白了。
      

  6.   


    pivot 在这里写你要做为标题的字段
    改成这样:
    transform sum(scnumber) as 每月完成数量
    select pname0 as 员工姓名
    from tableName
    group by pname0
    pivot Format(ddate,"mmm") IN ("一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月");
      

  7.   

    再改:
    transform sum(scnumber)
    select pname0 as 员工姓名
    from tableName
    group by pname0
    pivot month(ddate) IN (1,2,3,4,5,6,7,8,9,10,11,12);
      

  8.   

    我不只有pname0一个,还有pname1,pname2,pname3,pname4,pname5......pname9
      

  9.   

    用双循环,pcode0 外循环,时间为内循环