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

Откуда:
Сообщений: 18
Добрый день.

Есть таблица t с полями a (integer) и b (integer). В ней хранятся данные вида:
a | b
-----
1 | 1
1 | 2
1 | 3
1 | 4
1 | 5
1 | 6
1 | 7
1 | 8
2 | 1
2 | 2
2 | 3
2 | 4
2 | 5
2 | 6
3 | 1
3 | 2
3 | 3
3 | 4
3 | 5
3 | 6
3 | 7

Мне нужно выбрать максимальные значения b для каждого из значений a, т.е. получить результат вида:

a | b
-----
1 | 8
2 | 6
3 | 7

Подскажите, пожалуйста, каким должен быть SQL-запрос?
16 дек 13, 13:43    [15298602]     Ответить | Цитировать Сообщить модератору
 Re: SQL-запрос  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10232
Блог
select a, max(b) max_b
from MyTable
group by a
16 дек 13, 13:44    [15298609]     Ответить | Цитировать Сообщить модератору
 Re: SQL-запрос  [new]
Luciy Mortem
Member

Откуда:
Сообщений: 18
Спасибо. А если есть еще поля c, d и т.д., в которых неповторяющиеся значения. Т. е. вид такой:

a | b | с | ...
----------
1 | 1 | А
1 | 2 | Б
1 | 3 | В
1 | 4 | Г
1 | 5 | Д
1 | 6 | Е
1 | 7 | Ё
1 | 8 | Ж
2 | 1 | З
2 | 2 | И
2 | 3 | Й
2 | 4 | К
2 | 5 | Л
2 | 6 | М
3 | 1 | Н
3 | 2 | О
3 | 3 | П
3 | 4 | Р
3 | 5 | С
3 | 6 | Т
3 | 7 | У

А задача всё та же:

a | b | с | ...
----------
1 | 8 | Ж
2 | 6 | М
3 | 7 | У

GROUP BY здесь уже не удастся использовать. Через вложенные запросы?
16 дек 13, 13:55    [15298702]     Ответить | Цитировать Сообщить модератору
 Re: SQL-запрос  [new]
Игорь Горбонос
Member

Откуда: Днепропетровск
Сообщений: 4236
Luciy Mortem,

А почему нельзя добавить max на третье поле?
16 дек 13, 13:59    [15298729]     Ответить | Цитировать Сообщить модератору
 Re: SQL-запрос  [new]
Добрый Э - Эх
Guest
Luciy Mortem,

выбирай на свой вкус и исходя из возможностей своего сервера...
16 дек 13, 14:00    [15298741]     Ответить | Цитировать Сообщить модератору
 Re: SQL-запрос  [new]
Luciy Mortem
Member

Откуда:
Сообщений: 18
Спасибо, не додумался.
16 дек 13, 14:03    [15298760]     Ответить | Цитировать Сообщить модератору
 Re: SQL-запрос  [new]
Добрый Э - Эх
Guest
Игорь Горбонос
Luciy Mortem,

А почему нельзя добавить max на третье поле?
потому что если вангануть кофейной гущей на хрустальном шаре, то у него там, скорее всего, "магия данных". И max по третьему полю будет совсем не в той же строке, где max по второму.
16 дек 13, 14:03    [15298763]     Ответить | Цитировать Сообщить модератору
 Re: SQL-запрос  [new]
Luciy Mortem
Member

Откуда:
Сообщений: 18
Добрый Э - Эх
Игорь Горбонос
Luciy Mortem,

А почему нельзя добавить max на третье поле?
потому что если вангануть кофейной гущей на хрустальном шаре, то у него там, скорее всего, "магия данных". И max по третьему полю будет совсем не в той же строке, где max по второму.


К счастью, выборка происходит последовательно, т.е. с результата отбора первого максимального значения все последующие максимальные значения берутся только из одного возможного варианта. В общем, отрабатывает всё корректно. Еще раз спасибо за помощь.
16 дек 13, 14:08    [15298800]     Ответить | Цитировать Сообщить модератору
 Re: SQL-запрос  [new]
Luciy Mortem
Member

Откуда:
Сообщений: 18
Увы, я ошибся. Добрый Э - Эх был прав. Результат - каша. =/
16 дек 13, 14:20    [15298892]     Ответить | Цитировать Сообщить модератору
 Re: SQL-запрос  [new]
Luciy Mortem
Member

Откуда:
Сообщений: 18
Вопрос остается открытым. =)
16 дек 13, 14:21    [15298893]     Ответить | Цитировать Сообщить модератору
 Re: SQL-запрос  [new]
Luciy Mortem
Member

Откуда:
Сообщений: 18
Совсем слепой. Добрый Э - Эх, спасибо, проглядел пост.
16 дек 13, 14:23    [15298916]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить