SQL запрос
Первое это какое? У тебя данные уже как-то отсортированы по какому-то третьему столбцу?
по первому(2007-01-10 10:32:00.000)
читай про group by, distinct
distinct - по всем проверяет -(
или ты хочешь чтобы оно тебе вывело:
2007-01-10 10:30:00.000 27005.0000
2007-01-10 10:31:00.000 27039.0000
2007-01-10 10:32:00.000 27074.0000 ?

и соответствующие значения
select distinct в сочетании с group by field1 выведет тебе только первую строчку для каждого уникального field1, насколько я помню.
В базе данных не существует понятия первая, вторая и т.д. запись, пока записи не отсортированы.
А они не отсортированы по второму столбцу.
Получается что для каждого уникального времени надо выводить случайное значение из второго столбца с таким же временем.
SELECT DISTINCT columnA, columnB ORDER BY columnB GROUP BY columnA
Ошибку скажет, что columnB не входит в GROUP BY выражение.

как оставить только уникальное(первое) время?Записи в таблице не упорядочены, нельзя просто так говорить какая запись первая, а какая вторая, нужны какие-то дополнительные данные.
Если нужна просто уникальность, то почему бы не написать
SELECT columnA, min(columnB) GROUP BY columnA;
?
записи отсортированы по времени
из всех таких значений упорядоченных по времени надо получить
любой значение соответствующее
2007-01-10 10:31:00.000 любое из списка(логичнее первое)
2007-01-10 10:32:00.000 любое из списка(логичнее первое)
2007-01-10 10:33:00.000 любое из списка(логичнее первое)
2007-01-10 10:34:00.000 любое из списка(логичнее первое)
Ещё раз. Первое это какое?
SELECT columnA, min(columnB) GROUP BY columnA
записи отсортированы по времениВ данном случае это является отношением частичного порядка.
сенкс большой
columnA columnB columnC columnD columnE
2007-01-10 10:30:00.000 27058.0000 1 2007-01-10 10:30:29.000 0
2007-01-10 10:30:00.000 27040.0000 1 2007-01-10 10:30:39.000 0
2007-01-10 10:30:00.000 27040.0000 1 2007-01-10 10:30:49.000 0
2007-01-10 10:30:00.000 27039.0000 1 2007-01-10 10:30:56.000 0
2007-01-10 10:30:00.000 27040.0000 2 2007-01-10 10:30:46.000 0
2007-01-10 10:30:00.000 27008.0000 3 2007-01-10 10:30:49.000 0
2007-01-10 10:30:00.000 27050.0000 4 2007-01-10 10:30:29.000 0
2007-01-10 10:30:00.000 27005.0000 8 2007-01-10 10:30:27.000 0
2007-01-10 10:30:00.000 27050.0000 24 2007-01-10 10:30:56.000 0
2007-01-10 10:31:00.000 27050.0000 1 2007-01-10 10:31:04.000 0
2007-01-10 10:31:00.000 27040.0000 1 2007-01-10 10:31:20.000 0
2007-01-10 10:31:00.000 27040.0000 1 2007-01-10 10:31:46.000 0
2007-01-10 10:31:00.000 27049.0000 1 2007-01-10 10:31:49.000 0
2007-01-10 10:31:00.000 27050.0000 1 2007-01-10 10:31:51.000 0
2007-01-10 10:31:00.000 27020.0000 1 2007-01-10 10:31:53.000 0
2007-01-10 10:31:00.000 27039.0000 2 2007-01-10 10:31:00.000 0
2007-01-10 10:31:00.000 27049.0000 2 2007-01-10 10:31:04.000 0
2007-01-10 10:31:00.000 27050.0000 2 2007-01-10 10:31:32.000 0
2007-01-10 10:31:00.000 27049.0000 2 2007-01-10 10:31:49.000 0
2007-01-10 10:31:00.000 27037.0000 3 2007-01-10 10:31:04.000 0
2007-01-10 10:31:00.000 27037.0000 3 2007-01-10 10:31:15.000 0
2007-01-10 10:31:00.000 27050.0000 3 2007-01-10 10:31:32.000 0
2007-01-10 10:31:00.000 27050.0000 3 2007-01-10 10:31:44.000 0
2007-01-10 10:31:00.000 27020.0000 3 2007-01-10 10:31:53.000 0
2007-01-10 10:31:00.000 27040.0000 4 2007-01-10 10:31:04.000 0
2007-01-10 10:31:00.000 27040.0000 7 2007-01-10 10:31:32.000 0
2007-01-10 10:31:00.000 27050.0000 8 2007-01-10 10:31:53.000 0
2007-01-10 10:31:00.000 27050.0000 10 2007-01-10 10:31:13.000 0
2007-01-10 10:31:00.000 27050.0000 10 2007-01-10 10:31:36.000 0
2007-01-10 10:31:00.000 27050.0000 11 2007-01-10 10:31:04.000 0
2007-01-10 10:31:00.000 27050.0000 13 2007-01-10 10:31:32.000 0
2007-01-10 10:31:00.000 27050.0000 25 2007-01-10 10:31:12.000 0
2007-01-10 10:31:00.000 27050.0000 48 2007-01-10 10:31:20.000 0
2007-01-10 10:32:00.000 27067.0000 1 2007-01-10 10:32:02.000 0
2007-01-10 10:32:00.000 27051.0000 1 2007-01-10 10:32:09.000 0
2007-01-10 10:32:00.000 27060.0000 1 2007-01-10 10:32:50.000 0
2007-01-10 10:32:00.000 27050.0000 1 2007-01-10 10:32:55.000 0
2007-01-10 10:32:00.000 27050.0000 1 2007-01-10 10:32:58.000 0
2007-01-10 10:32:00.000 27050.0000 1 2007-01-10 10:32:59.000 0
2007-01-10 10:32:00.000 27073.0000 2 2007-01-10 10:32:02.000 0
2007-01-10 10:32:00.000 27074.0000 2 2007-01-10 10:32:09.000 0
2007-01-10 10:32:00.000 27075.0000 2 2007-01-10 10:32:29.000 0
2007-01-10 10:32:00.000 27070.0000 2 2007-01-10 10:32:45.000 0
2007-01-10 10:32:00.000 27055.0000 2 2007-01-10 10:32:50.000 0
2007-01-10 10:32:00.000 27055.0000 2 2007-01-10 10:32:57.000 0
2007-01-10 10:32:00.000 27051.0000 3 2007-01-10 10:32:09.000 0
2007-01-10 10:32:00.000 27070.0000 3 2007-01-10 10:32:45.000 0
2007-01-10 10:32:00.000 27055.0000 3 2007-01-10 10:32:55.000 0
2007-01-10 10:32:00.000 27050.0000 4 2007-01-10 10:32:58.000 0
2007-01-10 10:32:00.000 27050.0000 5 2007-01-10 10:32:58.000 0
2007-01-10 10:32:00.000 27075.0000 10 2007-01-10 10:32:22.000 0
pk где?
select columnA, columnB, columnC, columnD, columnE, row_number over (partition by columnA order by columnE) as rn from table
) where rn=1
во круто этот запрос работает в полтора раза быстрее сенкс.
Оставить комментарий
grek72
columnA ColumnB2007-01-10 10:30:00.000 27005.0000
2007-01-10 10:30:00.000 27094.0000
2007-01-10 10:30:00.000 27058.0000
2007-01-10 10:30:00.000 27050.0000
2007-01-10 10:30:00.000 27040.0000
2007-01-10 10:30:00.000 27040.0000
2007-01-10 10:31:00.000 27039.0000
2007-01-10 10:31:00.000 27039.0000
2007-01-10 10:31:00.000 27037.0000
2007-01-10 10:31:00.000 27050.0000
2007-01-10 10:31:00.000 27020.0000
2007-01-10 10:31:00.000 27040.0000
2007-01-10 10:32:00.000 27074.0000
2007-01-10 10:32:00.000 27073.0000
2007-01-10 10:32:00.000 27067.0000
2007-01-10 10:32:00.000 27074.0000
2007-01-10 10:32:00.000 27074.0000
2007-01-10 10:32:00.000 27051.0000
2007-01-10 10:32:00.000 27055.0000
как оставить только уникальное(первое) время? [mssql 2005]
Т.е. то, что выделенно жирным