基本上,我在MySQL,Item_id,Date和New_Qty中查询3列。当我在日期列上使用max函数时,其他列都会显示相同日期范围的最大值。
SELECT `item_id` , max(date) AS max_date ,`new_qty`
FROM `item_warehouse_link_history`
WHERE warehouse_id =1
AND item_id=1000
AND DATE
BETWEEN '2010-10-01 12:00:00'
AND '2010-10-07 12:00:00'
所以,当我试图找到最新日期的“new_qty”时,最新日期弹出正常,但“new_qty”是整个范围的最大值。
感谢任何帮助!
答案 0 :(得分:1)
使用:
SELECT x.item_id,
x.date,
x.new_qty
FROM ITEM_WAREHOUSE_LINK_HISTORY x
JOIN (SELECT t.item_id,
MAX(t.date) AS max_date
FROM item_warehouse_link_history t
WHERE t.warehouse_id = 1
AND t.item_id = 1000
AND t.date BETWEEN '2010-10-01 12:00:00'
AND '2010-10-07 12:00:00'
GROUP BY t.item_id) y ON y.item_id = x.item_id
AND y.max_date = x.date
聚合函数(IE COUNT,MIN,MAX,SUM等)仅对提供的值进行操作(如果在应用聚合函数之前组合两列或更多列的值) - 其他如果在GROUP BY子句中声明了聚合函数中未提及的列,则列只是保证关系。