举例:
表1:编号,姓名,性别,月薪
     001  王一  男   1000
     002  王二  男    800
     003  李永  男   2000
     004  刘三  男   1500
     005  刘万  男   1800
     006  王芬  女   1200欲得到的结果:
   分析项目    类别      分类   人数    月薪合计   
  按人员分析    姓王的     男     2       1800
  按人员分析    姓王的     女     1       1200
  按人员分析    姓李的     男     1       2000
  按人员分析    姓刘的     男     2       3300我这样写的:SELECT '按人员分析',CASE WHEN 姓名 like '王%' then '姓王的' WHEN 姓名 like '李%' then '姓李的' WHEN 姓名 like '刘%' then '姓刘的' end ,COUNT(编号),SUM(月薪)
FROM 表1
group by 姓名怎么不行啊?

解决方案 »

  1.   

    SELECT '按人员分析','姓'+left(姓名,1)+'的',性别,COUNT(1),SUM(月薪)
    FROM 表1
    group by left(姓名,1),性别
      

  2.   

    以上语句少了性别:更改如下SELECT '按人员分析',CASE WHEN 姓名 like '王%' then '姓王的' WHEN 姓名 like '李%' then '姓李的' WHEN 姓名 like '刘%' then '姓刘的' end ,性别,COUNT(编号),SUM(月薪)
    FROM 表1
    group by 姓名,性别怎么不行啊?
      

  3.   

    如果类别改为:如果姓王的为:A,如果姓刘的为 B,如果姓李的为:C,就是要用case when 语句呢?
      

  4.   

    对不起,忘了一个字段:状态(在职,聘用,退休)case when 状态 in(在职,聘用) then '在职' else '离职' end as 状态   分析项目     状态    类别      分类   人数    月薪合计   
      按人员分析    在职      姓王的     男     2       1800
      按人员分析    在职      姓王的     女     1       1200
      按人员分析    在职      姓李的     男     1       2000
      按人员分析    在职      姓刘的     男     2       3300
      

  5.   

    --加上状态就这样写
    SELECT '按人员分析',状态,'姓'+left(姓名,1)+'的',性别,COUNT(1),SUM(月薪)
    FROM 表1
    group by 状态,left(姓名,1),性别
      

  6.   

    amker() ( ) 信誉:99    Blog  2006-10-10 10:15:00  得分: 0  
     
     
       如果类别改为:如果姓王的为:A,如果姓刘的为 B,如果姓李的为:C,就是要用case when 语句呢?
    --=============================================================SELECT '按人员分析',状态,case 姓名 when 'a' then '姓张的' when 'b' then '姓刘的' when 'c' then '姓李的' end,性别,COUNT(1),SUM(月薪)
    FROM 表1
    group by 状态,姓名,性别
      

  7.   

    SELECT '按人员分析',case when 状态 in(在职,聘用) then '在职' else '离职' end as 状态,'姓'+left(姓名,1)+'的',性别,COUNT(1),SUM(月薪)
    FROM 表1
    group by (case when 状态 in(在职,聘用) then '在职' else '离职' end),left(姓名,1),性别