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

Откуда:
Сообщений: 31
Всем доброго дня!

Есть запрос, который группирует по некоторому полю в таблице.
Но я хочу помимо группируемого поля и количество вывести так же другое поле из этой таблицы N.

На что мне SqlServer отвечает:
{Такое поле} недопустим в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY

Решение, которое первое напрашивается - это вложенные запросы.
Там где группировка - это вложенный запрос как таблицу можно представить объеденную в запросе через JOIN с таблицей N
Все работает.

Но есть ли более гибкие варианты решения данной задачи?
Ведь получается здесь целых два запроса, для того чтобы выбрать из одной таблицы. Не очень экономично с точки зрения ресурсов, как мне кажется.

Заранее спасибо!
28 май 14, 10:38    [16083796]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли избежать вложенного запроса при группировке?  [new]
Добрый Э - Эх
Guest
использовать агрегатные оконные функции [sum | count | max | min | avg] over(partition by ...)
28 май 14, 10:41    [16083813]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли избежать вложенного запроса при группировке?  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
LexNext
Но я хочу помимо группируемого поля и количество вывести так же другое поле из этой таблицы N.
И какое же значение поля N из какой строки группы Вы хотели бы видеть в результате?
Или список N через запятую? В последнем случае тоже получится своеобразная агрегатная функция.
28 май 14, 10:49    [16083879]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли избежать вложенного запроса при группировке?  [new]
Glory
Member

Откуда:
Сообщений: 104760
LexNext
Ведь получается здесь целых два запроса, для того чтобы выбрать из одной таблицы.

А почему вы решили, что запросов два ?
28 май 14, 11:07    [16084022]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить