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,对不起。