select 维修工,count(产品) as 工作量 from 你的表 group by 维修工

解决方案 »

  1.   

    select 维修工,count(*) as 工作量
    from <TableName>
    group by 维修工
      

  2.   

    谢谢 fast_qiu(快球) 和 zswang(伴水)(准备去流浪)  两位,小弟还想问的复杂点,勿怪:假设有如下表:
                     产品           维修工     安装工
                   科龙空调         李明        毛宁
                   春兰1匹          刘德华      周星驰
                   格力1.5匹        李明        周星驰
                   春兰2匹          郭富城      董建华我通过Sql语句统计维修工的工作量,结果如下表
                   员工            维修量     安装量
                   李明               2        0
                   刘德华             1        0 
                   郭富城             1        0
                   周星驰             0        2
                   毛宁               0        1
                   董建华             0        1             
    如何实现?(SQLServer2000)
      

  3.   

    你应该有两张表。一个是上面的表,还有一个是员工表。
    sql 如下:
     
    select a.员工,维修量=(select count(b.维修工) from 你的表 b where b.维修工=a.员工),安装量=(select count(b.安装工) from 你的表 b where b.安装工=a.员工) form 员工表 a 
      

  4.   

    select 维修工,count(产品) '工作量',count(Case when 安装工=维修工 then 1 end) '安装量'from 表 group by 维修工
      

  5.   

    select 维修工,count(*) 工作量 from awds group by 维修工
      

  6.   

    to chbchen(代码工人) :
       我不想把所有员工都统计出来,只是想把那张表中涉及到员工统计,因为如果有多个部门,我不想把所有部门的员工都统计,例如统计财务部员工的安装维修量是没有意义的.
    另外,如果我使用临时表,该怎样创建.
    谢谢!
      

  7.   

    select *from (select 维修工 as 员工,count(*) as 维修量 from table group by 维修工 ) a 
    full join 
    (select 安装工 as 员工,count(*) as 安装量 from table group by 安装工 ) b
    on a.员工=b.员工
      

  8.   

    select T1.维修工 as 员工,T1.维修量,T2.安装量
    from (select 维修工,count(*) as 维修量
          from <TableName>
          group by 维修工) as T1,
         (select 安装工,count(*) as 安装量
         from <TableName>
         group by 安装工) as T2
    where T1.维修工=2.安装工
      

  9.   

    /* 难道没有员工表? */
    --CREATE TABLE Test(
    --  产品 varchar(20),
    --  维修工 varchar(10),
    --  安装工 varchar(10)
    --);
    --go
    --INSERT INTO Test (产品,维修工,安装工) VALUES ('科龙空调','李明','毛宁');
    --INSERT INTO Test (产品,维修工,安装工) VALUES ('春兰1匹','刘德华','周星驰');
    --INSERT INTO Test (产品,维修工,安装工) VALUES ('格力1.5匹','李明','周星驰');
    --INSERT INTO Test (产品,维修工,安装工) VALUES ('春兰2匹','郭富城','董建华');
    select 维修工 as 员工,count(*) as 维修量,0 as 安装量 from Test group by 维修工
    union
    select 安装工 as 员工,0 as 维修量,count(*) as 安装量 from Test group by 安装工
      

  10.   

    对不起,刚才的语句没经测试,现在发现严重出错,应该是 chbchen(代码工人) 兄的那种方法。
      

  11.   

    To zswang(伴水)(准备去流浪):
       你的代码的后三行使我受到启发,基本实现了功能,谢谢你.
       但是,你的代码没有考虑到这样一种因素,那就是,如果某位员工既有维修量,有做了安装工作,那结果应该是:
          员工         维修量         安装量
          周星驰          1            2
    而你的代码却不能计算出来,不过我还是非常感谢你的,请你帮我一下
      

  12.   

    select 员工, sum(维修量),sum(安装量)  from 
    (select 维修工 员工,count(维修量) 维修量,     安装量 =0 from <table>
    group by 维修工
    union 
    select 安装工 员工,  维修量 = 0, count(安装工) 安装量 from 页面表 group by 安装工
    ) a 
    group by 员工
      

  13.   

    /*****************************************
    select distinct tbl.维修工,tbl.安装工,q1.count as 工作量,q2.count as 安装量
    from tblname tbl,(select 维修工,count(*) count from tblname group by 维修工)q1,(select 安装工,count(*) count from tblname group by 安装工)q2
    /*******************************************
    调试一下,相信结果会令你满意的。
      

  14.   

    不好意思,写错了,这才是对的!select 员工, sum(维修量),sum(安装量)  from 
    (select 维修工 员工,count(维修量) 维修量,  安装量 =0 from <table>
    group by 维修工
    union 
    select 安装工 员工,  维修量 = 0, count(安装工) 安装量 from <table>
    group by 安装工
    ) a 
    group by 员工
      

  15.   

    To  CYHhelloworld() :
        你说的那种方法,我以前在本地数据库中使用过,但现在我在远程数据库中,我准备尽量使用Sql语句。顺便也学习一下
      

  16.   

    To  bigysw(大花脸)
      你的语句我运行了,有错误:列名 '维修量' 无效。
      

  17.   

    select 员工, sum(维修量),sum(安装量)  from 
    (select 维修工 员工,count(维修工) 维修量,  安装量 =0 from <table>
    group by 维修工
    union 
    select 安装工 员工,  维修量 = 0, count(安装工) 安装量 from <table>
    group by 安装工
    ) a 
    group by 员工
    这下对了!是里面的一个东西写错了!调试通过!
      

  18.   

    To bigysw(大花脸) :  
       你的代码我已经调试过了,完全符合要求,真是高手啊.
       不过我想问你,那个到数第二行的 a 是什么意思, 谢谢   最后也谢谢所有参与这个问题的前辈们,非常感谢.
      

  19.   

    不敢当!
    临时表(不是真正意义上MSSQL定义的临时表)代号,供你简化脚本代码。
     a 在这里不用也可以。
      

  20.   

    对不起大家,我来晚了,本来想写两句的,不过看了大家的东西之后我认为 bigysw(大花脸)的做法是最好的。