2012-06-07 31 views
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)); 

我用一个连接到“添加”日期列。之后,我忽略了无用的物品,并从一年前至今的某个特定客户的发票中进行选择。

感谢您的任何指导。

戴恩

回答

3

貌似group by将适合该法案:

select product_id 
,  max(date) 
from YourTable 
group by 
     product_id 
+0

完美的作品,谢谢。 – Danedo