2011-11-10 21 views
1
SELECT DeviceID as "Printer Name", 
    (SELECT SUM(Count) WHERE DATE >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)as "7 Day Count", 
    (SELECT SUM(Count) WHERE DATE >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)as "30 Day Count" 
FROM printer_stats.Statistics 
GROUP BY DeviceID 

這是行不通的,想要接下來嘗試的一些輸入。試圖在同一個查詢中用不同的where子句指定不同的日期範圍來總結一個字段「計數」三次?

+0

三次?我只看到兩次。 –

+0

你是否得到任何記錄只是發出SELECT SUM(計數)WHERE DATE> = DATE_SUB(CURDATE(),INTERVAL 7 DAY – r0ast3d

+0

馬克 - 我還需要做另一個日期,但還沒有計算出的時間間隔,因爲它會 – user1040277

回答

4

使用SUM(CASE WHEN condition THEN Count ELSE 0 END)

SELECT 
    DeviceID as "Printer Name", 
    SUM(CASE WHEN DATE >= CURDATE() - INTERVAL 7 DAY THEN Count ELSE 0 END) AS "7 Day Count", 
    SUM(CASE WHEN DATE >= CURDATE() - INTERVAL 30 DAY THEN Count ELSE 0 END) AS "30 Day Count", 
FROM printer_stats.Statistics 
WHERE DATE >= CURDATE() - INTERVAL 30 DAY 
GROUP BY DeviceID 
+1

+1擊敗了我。 –

+0

對於WHERE子句爲+1。 – RedFilter

+0

爲什麼在FROM之後的附加WHERE?是否需要在那裏,如果是的話,我需要改變它,當我使用我的第三屆,那將是爲acedemic年? – user1040277

相關問題