0

我有一个由连接和一些条件创建的下表:

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));

我使用连接来“添加”日期列。之后,我不理会无用的物品,并从一年前至今的特定客户的发票中进行选择。

感谢您的任何指导。

丹麦人

4

1 回答 1

3

看起来group by适合该法案:

select  product_id
,       max(date)
from    YourTable
group by
        product_id
于 2012-06-07T17:10:58.377 回答