Mysql 按类型和日期列出的计数值和分组

Mysql 按类型和日期列出的计数值和分组,mysql,Mysql,我有这张桌子 (日期格式:年月日) 在mysql中创建视图并使其成为这样的查询是什么(按买家、状态分组,并计算每月交付/取消价值的数量) 您可以在count中设置条件来区分月份: SELECT t.buyer, t.status, COUNT(IF(MONTH(t.date) = 1, 1, NULL)) AS jan, COUNT(IF(MONTH(t.date) = 2, 1, NULL)) AS feb FROM TABLE AS t GROUP

我有这张桌子 (日期格式:年月日)

在mysql中创建视图并使其成为这样的查询是什么(按买家、状态分组,并计算每月交付/取消价值的数量)


您可以在
count
中设置条件来区分月份:

SELECT t.buyer,
       t.status,
       COUNT(IF(MONTH(t.date) = 1, 1, NULL)) AS jan,
       COUNT(IF(MONTH(t.date) = 2, 1, NULL)) AS feb
FROM TABLE AS t
GROUP BY buyer,
         status;

查找数据透视表。
日期格式:dd/mm/yyyy)
因此请修复该问题。关系数据库的效率伴随着数据类型的正确使用。然后,对于下一部分,考虑应用程序代码中的数据显示问题,以及如果我在将来添加更多的数据,例如,直到2021,并确保该查询不会同时计算2020年和2021年的1月?您可以简单地在IF函数中添加更多的条件,您能给我一个例子,我应该在IF函数中设置年份和月份吗?已在stackoverflow上搜索,但找不到正确的关键字
 + buyer   +  status   +  january  +  february  +
+----------+-----------+-----------+------------+
+  AAA     + delivered +     1     +      2     +
+  AAA     + cancelled +     1     +      1     +
+  BBB     + delivered +     2     +      0     +
+  BBB     + cancelled +     0     +      0     +
+----------+-----------+-----------+------------+
SELECT t.buyer,
       t.status,
       COUNT(IF(MONTH(t.date) = 1, 1, NULL)) AS jan,
       COUNT(IF(MONTH(t.date) = 2, 1, NULL)) AS feb
FROM TABLE AS t
GROUP BY buyer,
         status;