mySQL - 没有条目时显示0。

时间:2014-04-16 22:02:22

标签: mysql

我已经搜索了但在这个问题上没有积极的结果因此问题。我正在编写一个查询,并希望将缺失的值表示为0

我的表格似乎是

id ---- requesteddate ----支柱----状态

1 ----- 12/31/2013 ------ IT ------- 6

2 ----- 2014年1月1日--------- IT ------- 6

3 ----- 2014年1月30日-------- HR ------- 7

我想要的结果是

2013 - IT - 2

2013 - HR - 0

2014 - IT - 1

2014 - HR - 1

我不能让HR 0显示出来。我尝试过COALESCE(count(id),0)并将该组创建为sub并加入它并没有成功。请帮忙!

1 个答案:

答案 0 :(得分:0)

您需要使用CROSS JOIN来获取所有年份/支柱的组合,然后使用LEFT JOIN来返回所有年份/支柱的组合以及仅匹配的请求。如果没有年/支柱的组合,witrequest.id将为空并且不会被计算在内:

SELECT years.`year`, pillars.pillar, COUNT(witrequest.id)
FROM
  (SELECT DISTINCT YEAR(requesteddate) AS `year`
   FROM witrequest) years
  CROSS JOIN
  (SELECT DISTINCT pillar
   FROM witrequest) pillars
  LEFT JOIN witrequest
  ON YEAR(witrequest.requesteddate)=years.`year`
     AND witrequest.pillar=pillars.pillar
GROUP BY
  years.`year`, pillars.pillar