Я искал вокруг, и я нашел это SQL selecting rows by most recent date Это настолько близко к тому, что я хочу, но я не могу заставить его работать.
Я получаю сообщение об ошибке «Идентификатор столбца» недопустим в списке выбора, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY.SQL Выберите самые новые записи, которые имеют отчетливый столбец Имя
Я хочу новейшую строку по дате для каждого отдельного имени
Select ID,Name,Price,Date
From table
Group By Name
Order By Date ASC
Вот пример того, что я хочу
Table
ID| Name | Price | Date
---------------------------------
0 | A | 10 | 2012-05-03
1 | B | 9 | 2012-05-02
2 | A | 8 | 2012-05-04
3 | C | 10 | 2012-05-03
4 | B | 8 | 2012-05-01
желаемого результата
ID| Name | Price | Date
------------------------------
2 | A | 8 | 2012-05-04
3 | C | 10 | 2012-05-03
1 | B | 9 | 2012-05-02
Я использую Microsoft sql server 2008
Спасибо за любую помощь или пункты в правильном направлении
Пока это работает, вы не можете создать тай-брейк без какой-либо конкатенации полей. Вот почему я обычно использую внутреннее соединение вместо этого [http://sqlfiddle.com/#!3/e7382/7), когда не использовал row_number() –
@ConradFrix согласился, это была вторая версия, которую я был собираюсь писать, я только что сделал это первым. Я также отредактирую свой ответ со вторым вариантом. спасибо за предложение. – Taryn
Я пошел с первой частью этого, и это работает замечательно. Tie breaker не будет проблемой, поскольку я фактически использую datetime, и шансы на совпадение двух дат меньше, чем шансы на то, что я выиграю лотерею. Я ценю вашу помощь этим парням. –