Выберите отдельную строку с максимальной датой из таблицы сервера S'L?

Мне нужно, чтобы получить набор различных записей для таблицы вместе с максимальной даты во всех duplciates.

бывший:

Select distinct a,b,c, Max(OrderDate) as maxDate
From ABC
Group By a,b,c

Вопрос в том, я получаю запись обратно для каждой другой даты.

Ex:

aaa, bbb, ccc, Jan 1 2009
aaa, bbb, ccc, Jan 28 2009

Как я могу ограничить это так что я в конечном итоге только:

aaa, bbb, ccc Jan 28 2009

Я предполагаю, что этот вопрос является gorup и различные не ладят хорошо.

EDIT: Напомним, что проблема вызвала проблему, результаты запросов были ожидаемыми, а не как выше.

Ответ на: "Выберите отдельную строку с максимальной датой из таблицы сервера S'L?"

Количество ответов:3

Что-то не так либо с вашим запросом или с вашим примером результатов, как то, что вы описали не должно быть возможным. Как насчет некоторых фактических S'L и фактических результатов?

В любом случае, вам не нужно distinct there since all you're selecting are your three grouped columns an an aggregate, so you'll by definition end up with all distinct rows. I've never tried this, so perhaps there is some misbehavior when using both of those. Have you tried removing the там, так как все, что вы выбираете ваши три сгруппированных столбца совокупности, так что вы по определению в конечном итоге со всеми различными строками. Я никогда не пробовал это, так что, возможно, есть некоторые неправильное поведение при использовании обоих из них. Вы пробовали удалить distinct? What caused you to put it there? ? Что заставило тебя положить его туда?

WITH q AS (
        SELECT  abc.*, ROW_NUMBER() OVER (PARTITION BY a, b, c ORDER BY orderDate DESC) AS rn
        FROM    abc
        )
SELECT  *
FROM    q
WHERE   rn = 1

Наличие индекса на (a, b, c, orderDate) (in this order) will greatly improve this query. (в таком порядке) значительно улучшит этот запрос.

AB, bc, cd, 2009-04-30 09:23:07.090

Ваш запрос будет работать, так что что-то действительно неправильно или вы должным образом не сообщил точный характер вашего кода.

Если вы запустите этот запрос:

select 'ab' as Col1, 'bc' as col2, 'cd' as col3, getdate() as Date
into #temp
insert into #temp
values ('ab','bc','cd','1/15/09')
insert into #temp
values ('aa','bb','cc','1/1/09')
insert into #temp
values ('aa','bb','cc','1/22/09')

select col1,col2,col3,max(date)
from #temp
group by col1,col2,col3

Вы должны вернуться: "--48-" аа, bb, cc, 2009-01-22 00:00:00.000