MySQL按月交叉表查询,返回默认值1';s

MySQL按月交叉表查询,返回默认值1';s,mysql,Mysql,如果当月没有值,当我告诉查询默认为“0”时,为什么查询返回“1” 以下是我的结果: 别介意我上次(删除的)评论。。显示表结构和示例数据将其放在sqlfiddle.com或db fiddle.com上。。此外,你知道你是误用MySQL的功能组?通过选择不在GROUP By子句中的列。。这就是为什么您还应该将预期结果作为格式化文本包含的原因。count(distinct 0)统计不同值的数量。有1个不同的值(即值0),如果select不返回任何行,则没有。很难弄清楚您想要的是什么(可能完全删除或者

如果当月没有值,当我告诉查询默认为“0”时,为什么查询返回“1”

以下是我的结果:


别介意我上次(删除的)评论。。显示表结构和示例数据将其放在sqlfiddle.com或db fiddle.com上。。此外,你知道你是误用MySQL的功能组?通过选择不在GROUP By子句中的列。。这就是为什么您还应该将预期结果作为格式化文本包含的原因。
count(distinct 0)
统计不同值的数量。有1个不同的值(即值0),如果select不返回任何行,则没有。很难弄清楚您想要的是什么(可能完全删除
或者
-部分?),因此,正如Raymond所说,提供一些示例数据和预期结果。谢谢各位。。删除ELSE 0成功了!
SELECT  td_type,

COUNT(DISTINCT CASE WHEN DATE_FORMAT(ttDate,'%Y-%m') = DATE_FORMAT(NOW(), '%Y-%01') THEN (ttNum)    ELSE    0   END ) AS 'Jan',
COUNT(DISTINCT CASE WHEN DATE_FORMAT(ttDate,'%Y-%m') = DATE_FORMAT(NOW(), '%Y-%02') THEN (ttNum)    ELSE    0   END ) AS 'Feb',
COUNT(DISTINCT CASE WHEN DATE_FORMAT(ttDate,'%Y-%m') = DATE_FORMAT(NOW(), '%Y-%03') THEN (ttNum)    ELSE    0   END ) AS 'Mar',
COUNT(DISTINCT CASE WHEN DATE_FORMAT(ttDate,'%Y-%m') = DATE_FORMAT(NOW(), '%Y-%04') THEN (ttNum)    ELSE    0   END ) AS 'Apr',
COUNT(DISTINCT CASE WHEN DATE_FORMAT(ttDate,'%Y-%m') = DATE_FORMAT(NOW(), '%Y-%05') THEN (ttNum)    ELSE    0   END ) AS 'May',
COUNT(DISTINCT CASE WHEN DATE_FORMAT(ttDate,'%Y-%m') = DATE_FORMAT(NOW(), '%Y-%06') THEN (ttNum)    ELSE    0   END ) AS 'Jun',
COUNT(DISTINCT CASE WHEN DATE_FORMAT(ttDate,'%Y-%m') = DATE_FORMAT(NOW(), '%Y-%07') THEN (ttNum)    ELSE    0   END ) AS 'Jul',
COUNT(DISTINCT CASE WHEN DATE_FORMAT(ttDate,'%Y-%m') = DATE_FORMAT(NOW(), '%Y-%08') THEN (ttNum)    ELSE    0   END ) AS 'Aug',
COUNT(DISTINCT CASE WHEN DATE_FORMAT(ttDate,'%Y-%m') = DATE_FORMAT(NOW(), '%Y-%09') THEN (ttNum)    ELSE    0   END ) AS 'Sep',
COUNT(DISTINCT CASE WHEN DATE_FORMAT(ttDate,'%Y-%m') = DATE_FORMAT(NOW(), '%Y-%10') THEN (ttNum)    ELSE    0   END ) AS 'Oct',
COUNT(DISTINCT CASE WHEN DATE_FORMAT(ttDate,'%Y-%m') = DATE_FORMAT(NOW(), '%Y-%11') THEN (ttNum)    ELSE    0   END ) AS 'Nov',
COUNT(DISTINCT CASE WHEN DATE_FORMAT(ttDate,'%Y-%m') = DATE_FORMAT(NOW(), '%Y-%12') THEN (ttNum)    ELSE    0   END ) AS 'Dec',
            COUNT(ttNum) AS Total

FROM      v_closed_tickets
WHERE (DATE_FORMAT(ttDate, '%Y%') = DATE_FORMAT(NOW(), '%Y%')) AND ttCategory IN ('TT') 

GROUP BY ccOption