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 ?
или ты хочешь чтобы оно тебе вывело:
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 выражение.
ая бля, так они типа ещё и не отсортированы во втором столбике? тогда хз, можно попробовать без ORDER 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 любое из списка(логичнее первое)
из всех таких значений упорядоченных по времени надо получить
любой значение соответствующее
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 from (
select columnA, columnB, columnC, columnD, columnE, row_number over (partition by columnA order by columnE) as rn from table
) where rn=1
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]
Т.е. то, что выделенно жирным