MySQL:根据字段名称计算行数。(第2部分)

时间:2012-02-02 11:10:55

标签: mysql

我有两个mysql表:

缺陷

df_id | project_id | resp_id | status
------+------------+---------+----------
1     |     1      |    1    |  Open 
2     |     1      |    1    |  Open
3     |     1      |    1    |  Closed
4     |     1      |    2    |  Open
5     |     1      |    2    |  Closed

负责

resp_id | resp_comp_name
--------+----------------
   1    |     Google
   2    |     Firefox

我需要输出

resp_comp_name | open | closed
---------------+------+--------
  Google       |  3   |    1
  Firefox      |  1   |    1

我写道:

     SELECT r.resp_comp_name, d.status, COUNT(d.df_id) AS total
       FROM pms_defects d
  LEFT JOIN pms_responsibles r ON d.resp_id=r.resp_id
      WHERE d.project_id='1' AND d.resp_id != 0
   GROUP BY d.resp_id
   ORDER BY total DESC

它产生:

enter image description here

1 个答案:

答案 0 :(得分:0)

SELECT r.resp_comp_name, sum(if(d.status = 'Open',1,0)) as open, 
sum(if(d.status ='Closed',1,0)) as closed from pms_defects d, pms_responsibles r 
where r.resp_id = d.resp_id group by d.resp_id 

这使用if语句和sum来从行到列移动打开/关闭。

相关问题