2012-06-07 2 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(), не возвращая только одну строку, и я бы предпочел не запускать запрос для каждого идентификатора продукта.

таблица генерируется запрос:

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

Я использую присоединиться к «добавить» столбец даты. После этого я игнорирую бесполезные предметы и выбираю из счетов от конкретного клиента с года назад до настоящего времени.

Спасибо за любые рекомендации.

Dane

ответ

3

выглядит как group by впишется счет:

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

работает отлично, спасибо. – Danedo

Смежные вопросы