我有一个非常简单的表,里面装满了大约500k的记录
| ID_1 | ID_2 | Date | Fields... |
+-------+-------+-------------+-----------+
| 1 | 1 | 1/1/2016 | abc |
| 2 | 1 | 2/1/2016 | abc |
| 3 | 2 | 1/2/2016 | abc |
| 4 | 3 | 1/2/2016 | abc |
| 5 | 4 | 1/2/2016 | abc |
我必须根据共同参数从36个值中提取并按日期区分。 为了减少对数据库的访问并提高性能,我做一个子查询,然后将结果与if区分开来。 不同的总和工作完全正常,但我需要计算一些不同的值,这会返回正确的值+1。
SELECT
SUM( IF(MONTH(Date) = 1, 1, 0) ) AS A1,
SUM( IF(MONTH(Date) = 2, 1, 0) ) AS A2,
SUM( IF(MONTH(Date) = 3, 1, 0) ) AS A3,
...
COUNT(DISTINCT( IF(MONTH(Date) = '1', COALESCE(ID_cliente), 0) )) AS C1
FROM (
SELECT ID_1, ID_2, Date FROM table WHERE Fields = conditions
) AS Sub
如果实际值为0,则C1返回1;如果实际值为1,则返回2
有解决方案,或者我必须将其拆分为两个查询?