2013-06-26 118 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?周一至周日?等等。另外,如果我不能回答这个问题,有一个新问题会让你有新的看法和更多的社区意见。 –