2013-06-26 117 views
1

我的SQL表中有以下數據。MySQL查詢返回多個總計列

uid user category count date 
-------------------------------------------------- 
1  henry RED   4  2013-05-01 
2  john BLUE  3  2013-05-01 
3  alice RED   5  2013-05-01 
4  eric GREEN  2  2013-05-02 
5  eric BLUE  2  2013-05-02 
6  john RED   3  2013-05-02 
7  henry GREEN  2  2013-05-02 
8  eric RED   3  2013-05-03 
9  john BLUE  5  2013-05-03 

我想查詢,讓我回了以下數據

category 2013-05-01 2013-05-02 2013-05-03 
--------------------------------------------------- 
RED   9    3    3 
BLUE  3    2    5 
GREEN  0    4    0 

我可以用下面的查詢數據的一列,但我不知道如何多列編組爲如上所示。我想有一個查詢,我的PHP呈現,而不是循環通過每個日期。

SELECT category, SUM(count) 
FROM dbtable 
WHERE date='2013-05-01' 
GROUP BY category; 

這可能嗎?想法?

回答

0

像這樣的東西應該工作:

SELECT 
    category, 
    SUM(CASE WHEN date = '2013-05-01' THEN count END) AS `2013-05-01`, 
    SUM(CASE WHEN date = '2013-05-02' THEN count END) AS `2013-05-02`, 
    SUM(CASE WHEN date = '2013-05-03' THEN count END) AS `2013-05-03` 
FROM dbtable 
GROUP BY category 
+0

這工作。是否有任何一般形式可以選擇開始日期和結束日期,然後按天或周進行分組? – misterrose

+0

可能是這樣,但你可以把它作爲一個不同的問題嗎?星期分組可能有點牽扯,並且有一週是什麼問題 - Sun-Sat?週一至週日?等等。另外,如果我不能回答這個問題,有一個新問題會讓你有新的看法和更多的社區意見。 –