2015-01-09 44 views
2

我试图根据它的值计算出司机的attendance_status。 这是我的代码。MySQL将一个字段计数为两个不同的计数结果

SELECT *, COUNT(attendance_status) AS total_cars_dispatched 
FROM driver_attendance da 
LEFT JOIN collectible co ON (da.driver_attendance_id=co.driver_attendance_id) 
LEFT JOIN driver_pondo dp ON (dp.collectible_id=co.collectible_id) 
WHERE attendance_status=19 AND company_id=84 GROUP BY attendance_date DESC 

我想知道如何在值为4时使用单个查询制作另一个attendance_status COUNT。

+0

你可以发布你的表结构与样本输入数据和期望的结果? –

回答

2

试试这个:

SELECT attendance_date, 
     SUM(CASE WHEN attendance_status = 19 THEN 1 ELSE 0 END) AS total_cars_dispatched, 
     SUM(CASE WHEN attendance_status = 4 THEN 1 ELSE 0 END) AS attendance_status_4 
FROM driver_attendance da 
LEFT JOIN collectible co ON da.driver_attendance_id=co.driver_attendance_id 
LEFT JOIN driver_pondo dp ON dp.collectible_id=co.collectible_id 
WHERE company_id=84 
GROUP BY attendance_date DESC; 
+0

它的工作!谢谢你,即使我没有发布结构,因为你已经回答了。呃,另外一个问题,那部分是什么 - >那么1 ELSE 0 END意味着什么? – shadeofblack

+1

这定义了'CASE'的结果:对于实际检查的值(这里为19和4),'1'对于任何'ELSE'都是'0'。 'END'是'CASE'的结尾。 – Abecee

相关问题