对一列查询返回多列的问题部门  员工  工资
-----------------
部门1  员工1  1000
部门1  员工2  1000
部门1  员工3  2000
部门2  员工4  2000
部门2  员工6  1000
部门3  员工7  2000
部门3  员工8  3000
部门3  员工9  4000要求查询结果为:
部门    工资>=1000   工资>=2000   工资>=3000 (人数)
------------------------------
部门1   3              0           0
部门2   3              1           0
部门3   3              3           2以下查询可以,但因为其它原因不能用此方案,请教其它的方案
SELECT 部门,sum(case when 工资>=1000 then 1 else 0 end) as 工资>=1000 ,sum(case when 工资>=2000 then 1 else 0 end) as 工资>=2000  FROM Data  GROUP BY 部门 

解决方案 »

  1.   

    行转列大多都是这样做的,用case when然后汇总,不过条件要大于同时小于SELECT 部门,
    sum(case when 工资<1000 then 1 else 0 end) as 工资<1000,
    sum(case when 工资>=1000 and 工资<2000 then 1 else 0 end) as 工资>=1000,
    sum(case when 工资>=2000 and 工资<3000 then 1 else 0 end) as 工资>=2000,
    sum(case when 工资>=3000 and 工资<4000 then 1 else 0 end) as 工资>=3000,
    sum(case when 工资>=4000 then 1 else 0 end) as 工资>=4000
    FROM Data GROUP BY 部门