Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL在不同列中的日期之间进行筛选_Mysql_Sql - Fatal编程技术网

MySQL在不同列中的日期之间进行筛选

MySQL在不同列中的日期之间进行筛选,mysql,sql,Mysql,Sql,我有一个表事务,列如下: id | id_items | date | total --- ---------- ----------- ------- 1 it2 2020-09-01 10 2 it2 2020-09-02 15 3 it4 2020-09-03 5 4 it4 2020-09-04 15 5 it2 2020-10-11 10 6 it4 2020

我有一个表
事务
,列如下:

id | id_items | date      | total
--- ---------- ----------- -------
1   it2        2020-09-01  10
2   it2        2020-09-02  15
3   it4        2020-09-03  5
4   it4        2020-09-04  15
5   it2        2020-10-11  10
6   it4        2020-10-12  5
7   it4        2020-10-13  20
8   it2        2020-10-14  5
id_items | total(sept) | total(oct)
--------- ------------- ------------
it2       25            10
it4       20            25
我想通过
id\u items
在两列组中显示不同范围日期(九月和十月)之间的总结果(
SUM
),如下所示:

id | id_items | date      | total
--- ---------- ----------- -------
1   it2        2020-09-01  10
2   it2        2020-09-02  15
3   it4        2020-09-03  5
4   it4        2020-09-04  15
5   it2        2020-10-11  10
6   it4        2020-10-12  5
7   it4        2020-10-13  20
8   it2        2020-10-14  5
id_items | total(sept) | total(oct)
--------- ------------- ------------
it2       25            10
it4       20            25

你能给我一个MySQL查询来解决我的问题吗?谢谢。

像这样的方法应该可以:

SELECT id_items,
    SUM(IF(MONTH(t.date) = 9, t.total, 0)) AS sept_total,
    SUM(IF(MONTH(t.date) = 10, t.total, 0)) AS oct_total
FROM transactions t
GROUP BY id_items

我们的想法是根据
id\u项
进行分组,然后根据交易月份有条件地对合计总额进行
SUM()
分组。上述内容相当简单,假设2020年之前没有交易。如果您的数据跨越多个年份,您需要在某个地方对其进行说明,例如,
WHERE YEAR(t.date)=2020

类似的情况应该适用:

SELECT id_items,
    SUM(IF(MONTH(t.date) = 9, t.total, 0)) AS sept_total,
    SUM(IF(MONTH(t.date) = 10, t.total, 0)) AS oct_total
FROM transactions t
GROUP BY id_items

我们的想法是根据
id\u项
进行分组,然后根据交易月份有条件地对合计总额进行
SUM()
分组。上述内容相当简单,假设2020年之前没有交易。如果您的数据跨越多年,您需要在您的某个地方说明这一点,例如,
WHERE YEAR(t.date)=2020

谢谢@billynoah,这是工作,也是我需要的。谢谢你@billynoah,这是工作,也是我需要的@HarryWardana我需要MySQL查询代码,不是PHP,对不起。@HarryWardana我需要MySQL查询代码,不是PHP,对不起。