我有一个由连接和一些条件创建的下表:
product_id date
11111 2012-06-05
11111 2012-05-01
22222 2011-05-01
22222 2011-07-02
33333 2011-01-01
我正在尝试获取行,以便我的结果集包含每个产品的最新日期:
GOAL
product_id date
11111 2012-06-05
22222 2011-07-02
33333 2011-01-01
我可以按原样提取数据并进行手动排序,但我不愿意。我似乎无法找到一种方法来执行SELECT MAX()而不返回单行,而我宁愿不为每个产品ID运行查询。
该表由此查询生成:
SELECT item_id, sales_price, item, description, transaction_date
FROM db.invoice_line AS t1 INNER JOIN db.invoices AS t2
ON t1.invoice_id = t2.id_invoices WHERE item IS NOT NULL
AND item_id != '800001E9-1325703142' AND item_id != '800002C3-1326830147'
AND invoice_id IN
(SELECT id_invoices FROM db.invoices
WHERE customer_id = '[variable customer id]'
AND transaction_date >= DATE_SUB(NOW(), INTERVAL 360 DAY));
我使用联接来“添加”日期列。之后,我忽略了无用的物品,并从一年前到特定客户的发票中选择。
感谢任何指导。
戴恩
答案 0 :(得分:3)
看起来group by
符合条款:
select product_id
, max(date)
from YourTable
group by
product_id