我被困在当前项目的某个地方。问题是我有一个名为“deal”的表 它有三个字段。
id | date | deal_value| ------------------------------ 1 | 2014-01-03 | 200 | 2 | 2014-01-03 | 40 | 3 | 2014-02-20 | 23 | 4 | 2014-03-21 | 440 | 5 | 2014-06-18 | 256 | 6 | 2014-06-03 | 55 | 7 | 2014-12-15 | 456 |
现在的问题是我需要一个 sql 查询来获取结果,如下所示。
| month | deal_value(count) | -------------------------------- | 01 | 240 | | 02 | 23 | | 03 | 440 | | 04 | 0 | | 05 | 0 | | 06 | 311 | | 07 | 0 | | 08 | 0 | | 09 | 0 | | 10 | 0 | | 11 | 0 | | 12 | 456 |
如果有人可以的话,请提出一些想法......
最佳答案
这是一种快速但肮脏的方法。
SELECT a.mnth, COALESCE(SUM(deal_value),0) FROM
(SELECT 1 mnth UNION SELECT 2 UNION SELECT 3
UNION SELECT 4 UNION SELECT 5 UNION SELECT 6
UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
UNION SELECT 10 UNION SELECT 11 UNION SELECT 12) a
LEFT OUTER JOIN deal
ON a.mnth=MONTH(`date`)
GROUP BY a.mnth
这不需要另一个表,使用SELECT .. UNION
生成一个从1到12的列表,并LEFT OUTER JOIN
原始数据。
演示:SQL Fiddle
关于mysql - 获取数据(如果数据可用或不可用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24327048/