2016-04-04 2 views
0

Основываясь на исходных данных ниже и ожидаемом результате, мне нужна помощь в том, как найти правильный запрос.Max & Distinct на основе нескольких полей

В принципе, мне нужны эти данные на основе max (ID), однако обратите внимание, что поле RATING и TYPE может отличаться, поэтому Group By не будет работать.

Спасибо.

Raw Data & Expected Result

+1

Он отлично подходит для получения данных выборки и ожидаемые результаты, но, пожалуйста, не обеспечивают их как изображения. Пусть это будет copy'n'apasteable. Лучше всего было бы тестовым сценарием с 'CREATE TABLE #test ...' или 'DECLARE @test TABLE (...' с вашими вставленными тестовыми значениями или [Fiddle] (http://www.sqlfiddle.com) – Shnugo

+1

привет @Shnugo отметил, будет держать это в виду. Спасибо! – lucas

ответ

2

Вы, кажется, для получения максимального идентификатора для каждого NumId. Вы можете сделать это с помощью row_number():

select t.* 
from (select t.*, row_number() over (partition by NumId order by id desc) as seqnum 
     from t 
    ) t 
where t.seqnum = 1; 
0

Использование NOT EXISTS возвращать строку, если ни одна другая строка не имеет такой же NumTitle, но более высокое значение ID:

select t1.* 
from tablename t1 
where not exists (select 1 from tablename t2 
        where t2.NumTitle = t1.NumTitle 
        and t2.ID > t1.ID) 

Или JOIN версия:

select t1.* 
from tablename t1 
join (select NumTitle, MAX(ID) from tablename group by NumTitle) t2 
    on t2.NumTitle = t1.NumTitle and t2.ID = t1.ID 
Смежные вопросы