Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите плиз с агрегированием  [new]
Vitaliy_79
Member

Откуда:
Сообщений: 11
всем привет


есть таблица TABLE, данные в ней следующие:

ID NAME
1 'a'
1 's'
3 'd'
4 'f'
2 'q'

необходим select, чтобы результат был следующим:

ID NAME
1 'a'
1 's'
1 'd'
1 'f'
1 'q'

т.е. вывести первый столбец с минимальным значением.

так как мне надо, работает на СУБД SyBase ASE 12.5:

select min(ID)
,NAME
from table

а вот на MS SQL 2005 (9.0), выдает ошибку агрегирования!

подскажите плиз, как мне решить данную проблему.


СУБД, где необходимо чтобы так работало MS SQL 2005 (9.0)


пока ответа ни здесь на SQL.RU, ни на просторах Инета не нашел.

заранее огромное спасибо.
25 мар 12, 22:55    [12311601]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плиз с агрегированием  [new]
qwerty112
Guest
Vitaliy_79
всем привет


есть таблица TABLE, данные в ней следующие:

ID NAME
1 'a'
1 's'
3 'd'
4 'f'
2 'q'

необходим select, чтобы результат был следующим:

ID NAME
1 'a'
1 's'
1 'd'
1 'f'
1 'q'

т.е. вывести первый столбец с минимальным значением.

так как мне надо, работает на СУБД SyBase ASE 12.5:

select min(ID)
,NAME
from table

а вот на MS SQL 2005 (9.0), выдает ошибку агрегирования!

подскажите плиз, как мне решить данную проблему.


СУБД, где необходимо чтобы так работало MS SQL 2005 (9.0)


пока ответа ни здесь на SQL.RU, ни на просторах Инета не нашел.

заранее огромное спасибо.

select
(select min(id) from TABLE) as id,
name
from TABLE
25 мар 12, 23:03    [12311648]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плиз с агрегированием  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
select
 min(ID) over () as ID,
 NAME
from
 TABLE;
25 мар 12, 23:22    [12311738]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плиз с агрегированием  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
invm
select
 min(ID) over () as ID,
 NAME
from
 TABLE;
Но план у такого запроса хреновый, так что лучше так не делать.
25 мар 12, 23:49    [12311864]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плиз с агрегированием  [new]
Vitaliy_79
Member

Откуда:
Сообщений: 11
спасибо, помогло!
26 мар 12, 10:23    [12312600]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плиз с агрегированием  [new]
Klick
Member

Откуда: Стерлитамак - Москва
Сообщений: 1023
А это уже перестало работать?

select min(ID)
,NAME
from table
group by NAME
26 мар 12, 12:12    [12313452]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плиз с агрегированием  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Klick
А это уже перестало работать?

select min(ID)
,NAME
from table
group by NAME
И что получится?
Надо ведь глобальный минимум для каждого NAME выдать.
26 мар 12, 12:48    [12313668]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плиз с агрегированием  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
SELECT M.ID, T.[NAME]
FROM [TABLE] T CROSS JOIN (SELECT MIN(ID) FROM [TABLE]) M(ID);
26 мар 12, 12:51    [12313683]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плиз с агрегированием  [new]
Klick
Member

Откуда: Стерлитамак - Москва
Сообщений: 1023
[quot iap
Надо ведь глобальный минимум для каждого NAME выдать.[/quot]

Невнимательно условия задачи прочёл.
26 мар 12, 12:52    [12313686]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить