2017-08-17 89 views
1

新手需要一点帮助。有人可以提供一个查询,以方便地读,然后按月记录匹配的两个条件制表避免使用笨拙的重复这样的代码......按月计分匹配记录

SELECT 
SUM(CASE 
    WHEN extract(YEAR FROM `date`) = "2017" 
    AND extract(MONTH FROM `date`) = "07" 
    AND `conditionA` = "A" 
    AND `conditionB` = "B" 
    THEN 1 else 0 END) 
AS 2017_07 

SUM(CASE 
    WHEN extract(YEAR FROM `date`) = "2017" 
    AND extract(MONTH FROM `date`) = "08" 
    AND `conditionA` = "A" 
    AND `conditionB` = "B" 
    THEN 1 else 0 END) 
AS 2017_08 

SUM(CASE 
    WHEN extract(YEAR FROM `date`) = "2017" 
    AND extract(MONTH FROM `date`) = "09" 
    AND `conditionA` = "A" 
    AND `conditionB` = "B" 
    THEN 1 else 0 END) 
AS 2017_09 

FROM `datatable` 
+0

请查看此链接(https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)以了解有关如何改进的更多信息该问题,并不张贴图像 – TheGameiswar

+0

谢谢。我只是想提出更好的问题,但需要澄清一下,我应该做些什么改变。我的问题似乎很简洁,我发布了一个格式化的查询。我立即收到了问题的确切解决方案,尽管基本如此。你是否建议我应该发布表格数据来实现这个简单的事情? – Livefish

+0

如果你可以看看我发布的链接,它可以帮助你..你没有发布任何表数据,预期结果,当前结果 – TheGameiswar

回答

3

数据放入行,不列:

SELECT extract(YEAR FROM `date`) as yyyy, extract(MONTH FROM `date`) as mm, 
     COUNT(*) 
FROM datatable 
WHERE `conditionA` = 'A' AND `conditionB` = 'B' 
GROUP BY extract(YEAR FROM `date`), extract(MONTH FROM `date`) 
ORDER BY yyyy, mm ; 
+0

完美。谢谢! – Livefish