2015-09-14 6 views
0

Мне нужно получить самую раннюю дату из следующей таблицы на основе столбца «ItemNo».Как получить запись с самой ранней датой в группе

 
     ItemNo PO_number Date 
     110913 PO-8048 9/15/2015 
     110913 PO-8036 9/30/2015 
     110652 PO-1011 10/19/2015 
     110652 PO-1011 10/10/2015 
     110009 PO-1016 7/1/2015 
     110009 PO-1087 6/20/2015 
     110888 PO-7171 4/1/2015 

Ваш результат запроса должен быть таким.

 
     ItemNo PO_number Date 
     110913 PO-8048 9/15/2015 
     110652 PO-1011 10/10/2015 
     110009 PO-1087 6/20/2015 
     110888 PO-7171 4/1/2015 

Любая помощь была бы принята с благодарностью.

+0

Можете ли вы показать нам, какой запрос вы используете? – logixologist

+0

Если столбец даты имеет тип данных Date, вы можете выбрать SELECT .... ORDER BY dateColumnName – NoChance

ответ

0

Пара различных способов вы можете подойти к этому, один разумный подход был бы что-то вроде:

with min_rec as 
(
    select t.ItemNo, t.PO_number, t.Date, row_number() over(partition by t.ItemNo order by t.Date asc) as rn 
    from your_table t 
) 
select m.ItemNo, m.PO_number, m.Date 
from  min_rec m 
where m.rn = 1; 

Использование в CROSS ОТНОСИТЬСЯ был бы другой подход, который будет работать так же хорошо, хотя в данном случае это, вероятно Wouldn «т быть лучше исполнительский подход (хотя, как всегда, это зависит):

select distinct c.ItemNo, c.PO_number, c.Date 
from your_table t 
cross apply (
    select top 1 i.ItemNo, i.PO_number, i.Date 
    from your_table i 
    where i.ItemNo = t.ItemNo 
    order by i.Date asc) c; 

И, естественно, вы могли бы просто использовать самоприсоединение подзапрос (я пропущу пример на том, что один).

+0

chadhoc: спасибо за дополнительные усилия. –

+0

@Allen_Delon, рад помочь. Если это помогло решить вашу проблему, отметьте ее как ответ на вопрос. Благодарю. – chadhoc

+0

Как отметить это как ответ на вопрос? –

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