如果count为0,则显示Null

时间:2015-05-12 10:58:18

标签: mysql null

我有以下查询:

 SELECT e.employeeName, DATE_FORMAT(`maintenanceDate`, "%M %Y") AS
    Month,count(`maintenanceID`) AS Total  
    FROM `maintenance` m join employee e  
    on m.employeeID =e.employeeID  
    group by month,e.employeeID 

生成像这样的结果

employeeName    Month   Total
Big             Apr-15  2
Bar             Dec-14  1
Big             Dec-14  1

我是否可以知道如何改进,以便查询在每个特定月份没有计数的员工中显示总计0? 例如:2015年4月酒吧总数为0

1 个答案:

答案 0 :(得分:0)

您需要生成所有员工和月份的列表,然后引入您想要计算的数据。完整列表使用cross join。然后使用left join获取其余数据:

select e.employeeName, mon.Month, count(m.maintenanceID) AS Total  
from employee e cross join
     (select distinct date_format(maintenanceDate, '%M %Y') as month
      from maintenance
     ) mon left join
     maintenance m   
     on m.employeeID = e.employeeID and 
        date_format(m.maintenanceDate, '%M %Y') = mon.month
group by m.month, e.employeeID;