gpt4 book ai didi

mysql - 选择每个项目每月的最新行

转载 作者:行者123 更新时间:2023-11-30 23:09:34 24 4
gpt4 key购买 nike

我希望创建库存项目的摘要,显示每个月的最新行。

例如,我的表有:

id, date, item, quantity

我希望每个月的每个项目返回一行,显示每个月上次报告的数量。

类似于:

1, (July datetime), Banana, 5
3, (July datetime), Apple, 2
4, (August datetime), Banana, 6
8, (August datetime), Apple, 8

感谢您的帮助!

到目前为止我试过的是:

SELECT t1.*
FROM inventory t1
WHERE t1.date = (SELECT MAX(t2.date)
FROM inventory t2
WHERE t2.item = t1.item)

当然,这会显示每个项目的最新行...但不是每个月。

最佳答案

MySQL GROUP BY 扩展允许您按照以下方式进行操作

SELECT id, date, item, quantity
FROM
(
SELECT id, date, item, quantity
FROM inventory
ORDER BY item, date DESC
) q
GROUP BY YEAR(date), MONTH(date), item

一个更标准的方法是首先提取每个项目每个月的 MAX 日期,然后返回到 inventory 以获取所有其他字段

SELECT i.id, i.date, i.item, i.quantity
FROM
(
SELECT item, MAX(date) date
FROM inventory
GROUP BY item, YEAR(date), MONTH(date)
) q JOIN inventory i
ON q.item = i.item
AND q.date = i.date
ORDER BY YEAR(i.date), MONTH(i.date), i.item

这是 SQLFiddle 演示

关于mysql - 选择每个项目每月的最新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20442982/

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