2012-06-07 30 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