2013-10-14 3 views
0

Мой запрос возвращает последнюю дату ONRENT и CLOSED для одного и того же оборудования, когда я добавляю столбец «НАЛИЧИЕ». Мне нужна только последняя запись для каждой части оборудования.Как найти последнюю запись в таблице по дате

Вот мой запрос:

select  max([No_]), [Start Date], [Availability Status] 
from  [Rental Line] 
group by [No_], [Start Date], [Availability Status] 
+0

Пожалуйста, помечать вопрос с СУБД вы используете. Синтаксис SQL варьируется от реализации до реализации. – Barmar

+0

Наиболее сложный запрос для чтения с такими именами полей. – Kaf

ответ

0

Если я понять ваш вопрос правильно, вы хотите только последний статус доступности для каждой единицы оборудования, определенного no_, где «последний» будет определяемый последней датой начала. Если да, то это должно работать:

Попробуйте это:

select  RL.[No_], RL.[Start Date], RL.[Availability Status] 
from  [Rental Line] RL 
join 
(
    select 
     No_, 
     MAX([Start Date]) AS [LastStartDate] 
    from [Rental Line] RL1 
    group by No_ 
) X on RL.No_ = X.No_ AND RL.[Start Date] = X.[LastStartDate] 
+0

майабел, ты прибил его. Спасибо. Я относительно новичок в SQL и изучаю экспоненциально. –

0
select  max([No_]), [Start Date], [Availability Status] 
from  [Rental Line] 
group by [No_], [Start Date], [Availability Status] 
order by [AVAILABILITY] DESC 
+1

Включение столбца, являющегося частью агрегата ('max()') в 'group by', не имеет никакого смысла. –

+0

Спасибо globula_alba, но это все еще дает мне статус доступности для каждой единицы оборудования. Например, в прошлом одна аренда оборудования могла быть арендована 10 раз, так что последняя запись по дате покажет «ОНРЕНТ» или «ЗАКРЫТО» в зависимости от того, находится ли она в аренде или нет. –

+0

выберите max ([No_]), [Дата начала], [Статус доступности] из [Линия проката] группа по [No_], [Дата начала], [Статус доступности] заказать [НАЛИЧИЕ] DESC LIMIT 1 –

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