这里提出的问题的第2部分 -
MySQL query to return multiple summed columns
我的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设置逻辑给我一个任意数量的列的基本结构。
答案 0 :(得分: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
答案 1 :(得分:0)
我认为你必须使用过程语言我的SQL来循环月/年。
答案 2 :(得分: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