表work:
id          A          B          C          D          
----------- ---------- ---------- ---------- ---------- 
1           zs         ls         zs         ww
2           zs         zs         ww         ww
3           ww         ls         ls         zs 
4           ww         ww         zs         ls 
5           ww         ww         ww         zs
6           zs         zs         zs         zs id 表示 工作项目
zs=张三
ls=李四
ww=王五想得到的结果是:name          count(次数)                  
----------- ---------- 
zs            0
ls            0
ww            0

解决方案 »

  1.   

    SELECT
        name,COUNT(*) AS cnt
    FROM (
        SELECT A AS name FROM tb
        UNION ALL
        SELECT B FROM tb
        UNION ALL
        SELECT C FROM tb
        UNION ALL
        SELECT D FROM tb
    ) AS A
    GROUP BY name
      

  2.   

    错了  A B C D 是工作项目
    1 2 3 4 是序号 就是要统计  所有name出现的次数
      

  3.   

    楼上的已经写了,你的数据库是什么,支不支持form里的嵌套
      

  4.   


    我用的MYSQL数据库   好像有错误
      

  5.   

    这张表的设计就有问题!1,没有扩展性,如果再增加一个工作项目怎么办?
    2,查询不方便我认为改成这样的表结构会更好一些: id   name       work
    ---   --------   -----
      1   zs         A
      2   ls         B
      3   zs         C
      4   ww         D
      5   zs         A
      6   zs         B
      7   ww         C
      8   ww         D
      

  6.   


     id   a        b       c       d
    ---   ------   ------  ------  ------
      1   zs       zs      ww      zs
      2   ls       .       .       ww
      3   zs       .       .       ls
      4   ww       .       .       ww
      .   zs       .       .       zs
      .   zs       .       .       ww 
      .   ww       .       .       zs
      30  ww       .       .       ls
    这个是单月每个工作任务的详细情况 
    现在是想统计  每个员工这个月各个项目的工作的总次数
      

  7.   

    同意7楼的,这张表设计绝对有问题。
    7楼的表再加一个时间字段,你的所有要求都能满足了,统计任何时间段,任何业务都很直观明了。
    现有的表的条件下要完成你的要求,还是分成4句sql把。。非得写到一起确实是可以,不过语句会很庞大,而且就是为了拼接个输出的格式,没意思,懒得写。
    select tb.a,count(*) from tb group by tb.a;
    select tb.b,count(*) from tb group by tb.b;
    select tb.c,count(*) from tb group by tb.c;
    select tb.d,count(*) from tb group by tb.d;分别是a、b、c、d工作对于不同人的分类汇总。
      

  8.   

    按姓名分类统计就可以了
    GROUP BY 
      

  9.   

    select name ,工作项目,count(*) from work group by name,工作项目
      

  10.   

    你的题有问题呀如果ABCD是工作项目我就会做你这个题了