Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / агрегатные функции - хочу LAST, как в Access-e / 6 сообщений из 6, страница 1 из 1
27.09.2002, 18:02:50
    #32053802
max_try
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
агрегатные функции - хочу LAST, как в Access-e
Допустим, есть куча почти одинаковых записей. Мне нужно сгруппировать по одному полю, а для всех остальных повыбирать хотя бы одно значение, предпочтительнее всего последнее (порядок сортировки значения не имеет). В access-е делал так:

select Pole1, last (Pole2) from sometable
group by Pole1

А как такую же чучу отчебучить в SQL сервере?
...
Рейтинг: 0 / 0
27.09.2002, 19:00:16
    #32053825
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
агрегатные функции - хочу LAST, как в Access-e
Чем не устраивает
select Pole1, max(Pole2) from sometable group by Pole1
или
select Pole1, min(Pole2) from sometable group by Pole1

раз "порядок сортировки значения не имеет"
...
Рейтинг: 0 / 0
28.09.2002, 12:15:56
    #32053874
max_try
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
агрегатные функции - хочу LAST, как в Access-e
Не, в записи кроме поля 2 есть еще вагон полей, мне нужно получить одну существующую полную запись, соответствующую каждому из значений поля 1, причем желательно последнюю добавленную.
...
Рейтинг: 0 / 0
28.09.2002, 14:47:59
    #32053889
max_try
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
агрегатные функции - хочу LAST, как в Access-e
сам себе отвечу:

select c1 as q1,
(select top 1 c2 from Table1 where c1=Alias1.c1 order by c2 desc) as q2,
(select top 1 c3 from Table1 where c1=Alias1.c1 order by c2 desc) as q3,
(select top 1 c4 from Table1 where c1=Alias1.c1 order by c2 desc) as q4,
(select top 1 c5 from Table1 where c1=Alias1.c1 order by c2 desc) as q5
from Table1 as Alias1
GROUP BY c1

Выдает именно то, что и хотелось получить. Только вот страшновато становится от такого количества вложенных селектов, особенно если в исходной таблице 1000000 записей по 30 полей. Может, можно как-то поэффективнее?
...
Рейтинг: 0 / 0
29.09.2002, 17:54:43
    #32053947
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
агрегатные функции - хочу LAST, как в Access-e
А первичного ключа конечно же нет ?
...
Рейтинг: 0 / 0
29.09.2002, 19:07:52
    #32053950
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
агрегатные функции - хочу LAST, как в Access-e
думаю пойдет....
Код: plaintext
1.
2.
3.
SELECT b.*
FROM (SELECT c1 ,MAX(c2) FROM Table1 GROUP BY c1 ) a
         join Table1 b on a.c1=b.c1 and a.c2=b.c2
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / агрегатные функции - хочу LAST, как в Access-e / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]