2012-09-21 66 views
2

我想在一個表來計算不同的條件:MySQL的計數如果DateDiff的

SELECT gt.smechanic as 'Mech ID', 
     gm.mechanic_name as 'Mech Name', 
     count(gt.smechanic) as 'Total Invoices Not Received', 
     count(if(datediff(gt.dispatch_date, curdate()) < 10,1,0)) as 'Within 10 days' 
from gt 
straight_join gm on gt.smechanic = gm.mechanic_id 
where gt.status = 3 or gt.status = 5 
group by gt.scheduled_mechanic 

我不知道如果我取消自己離開這個說法,因爲我指望相同的值既是列回。

+1

請與您的查詢共享問題。 –

回答

3

您需要在第二列中使用SUM()而不是COUNT():COUNT只是計數記錄,它並不關心它們中的值是0還是1.然而,SUM會返回所有匹配的記錄的總數你的標準。

SUM(IF(DATEDIFF(gt.dispatch_date, CURDATE()) < 10, 1, 0)) 

我還要指出的是,選擇非集合列,你是不是也通過分組讓你容易受到不可預知的結果。我會將該GROUP BY子句更改爲

GROUP BY gt.smechanic, gm.mechanic_name