我希望创建库存项目摘要,显示每个月的最新行。
例如,我的表格有:
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)
当然,这会显示每个项目的最新行...但不会显示每个月。
答案 0 :(得分:0)
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
更标准的方法是先每个项目每月拉出最大日期,然后再加入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 演示