gpt4 book ai didi

MySQL 结果按日期

转载 作者:行者123 更新时间:2023-11-29 00:10:03 25 4
gpt4 key购买 nike

也许有一个简单的修复方法,但我无法弄清楚。我会尽力解释我的情况。

我正在处理一个 MySQL 查询,它将返回日期范围内的结果(在 A 列中)和日期范围 - 1 年(在 B 列中)。我需要按月日而不是按年对结果进行分组。所以我想要这样的东西:

        2014       2013        ----------------01-01      6          801-03      7          001-04      4          101-08      0         1301-21     11          7

In my current query (below) I get results like this (because of ELSE in CASE):

        2014       2013        ----------------01-01      0          801-03      7          001-04      0          101-08      0         1301-21      0          7

QUERY:

SELECT
DATE_FORMAT(table.date, '%e.%c.') AS date,
(CASE WHEN DATE(table.date) BETWEEN '2014-01-01' AND '2014-02-01' THEN ROUND(SUM(table.field), 2) ELSE 0 END) AS field_2014,
(CASE WHEN DATE(table.date) BETWEEN '2013-01-01' AND '2013-02-01' THEN ROUND(SUM(table.field), 2) ELSE 0 END) AS field_2013

FROM table

WHERE
(DATE(table.date) BETWEEN '2014-05-01' AND '2014-06-01' OR DATE(table.date) BETWEEN '2013-05-01' AND '2013-06-01')

GROUP BY
DATE_FORMAT(table.date, '%c.%e.')

我应该在 ELSE 中输入什么以及如何实现此功能?

谢谢你的时间

最佳答案

您需要聚合函数。我会推荐:

SELECT DATE_FORMAT(t.date, '%e.%c.') AS date,
SUM(CASE WHEN year(t.date) = 2014 THEN ROUND(SUM(t.field), 2) ELSE 0 END) AS field_2014,
SUM(CASE WHEN year(t.date) = 2013 THEN ROUND(SUM(t.field), 2) ELSE 0 END) AS field_2013
FROM table t
WHERE year(t.date) in (2013, 2014) and month(t.date) = 5
GROUP BY DATE_FORMAT(t.date, '%c.%e.');

我还建议使用格式 '%m-%d'。月份然后是年份意味着 order by 将在该列上工作。让所有日期具有相同的宽度(“05/01”而不是“5/1”)更符合您想要的输出。

关于MySQL 结果按日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25605364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com