2015-01-09 80 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

相關問題