0

此处提出的问题的第 2 部分 -

MySQL查询返回多个求和列

我的 SQL 表中有以下数据。想象一下,还有更多行跨越数年的数据。

uid    user    category    count    date
--------------------------------------------------
1      henry   RED         4        2013-04-01
2      john    BLUE        3        2013-04-11
4      eric    GREEN       2        2013-04-22
3      alice   RED         5        2013-05-01
5      eric    BLUE        2        2013-05-12
6      john    RED         3        2013-05-23
7      henry   GREEN       2        2013-06-03
8      eric    RED         3        2013-06-08
9      john    BLUE        5        2013-07-11
... (more) ...

我想要一个查询,它可以返回以下数据,根据日期按列分组。我知道如何使用 GROUP BY 命令将数据分组到行中。但我不确定如何按列进行操作。

category    May 2013     April 2013  ... (more)
------------------------------------
RED         8            4           
BLUE        2            3     
GREEN       0            2

我意识到可能有很多选择,就使用日期和时间功能而言。我只是在寻找更多关于如何设置 SQL 逻辑以给我任意数量的列的基本结构。

4

3 回答 3

0

您应该尝试按案例求和(如果不正确,则求和 0)。如下所示:

SELECT 
   ...
   SUM(CASE WHEN date BETWEEN ... AND ... THEN 'count' ELSE 0 END) as 'May 2013',
   SUM(CASE WHEN date BETWEEN ... AND ... THEN 'count' ELSE 0 END) as 'April 2013',
   etc.
FROM ...,
GROUP BY category
于 2013-06-26T16:59:40.143 回答
0

尝试这样的事情:

SELECT 
  category,
  SUM(CASE WHEN date BETWEEN '2013-05-01' AND '2013-06-01' THEN count ELSE 0 END) AS 'May 2013',
  SUM(CASE WHEN date BETWEEN '2013-04-01' AND '2013-05-01' THEN count ELSE 0 END) AS 'April 2013',
  ... (more)   
FROM dbtable
GROUP BY category
于 2014-11-25T05:33:30.527 回答
0

我认为您必须使用程序语言 My SQL 来循环月/年。

于 2013-11-24T15:51:15.583 回答