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

Откуда:
Сообщений: 55
Привет всем. Не получаеться сгрупировать по имени, а необходимо вывести общий оборот по наименованию продукта. Должно быть что то такое:
SELECT Products.ID, Products.Name, SUM(Products.Price * Orders.Quentity) AS Total
FROM Orders LEFT JOIN Products ON Orders.ProductID=Products.ID
WHERE Products.Price * Orders.Quentity > 20
GROUP BY Products.Name

Но SQL SERVER выдает ошибку
автор
Column 'Products.ID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
8 апр 16, 10:46    [19031364]     Ответить | Цитировать Сообщить модератору
 Re: Групирование, при создании вычисляемого поля на лету  [new]
Glory
Member

Откуда:
Сообщений: 104760
unsafe
Но SQL SERVER выдает ошибку
автор
Column 'Products.ID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

И вы прочитали текст этой ошибки ?
8 апр 16, 10:48    [19031385]     Ответить | Цитировать Сообщить модератору
 Re: Групирование, при создании вычисляемого поля на лету  [new]
unsafe
Member

Откуда:
Сообщений: 55
Glory, Разумеется, только я не совсем понимаю где тогда должна находиться наша функцию. Были мысли сделать подзапрос...но что то я встрял. Я совсем начинающий, запросы более 5рядов не приходилось как то делать :)
8 апр 16, 10:52    [19031401]     Ответить | Цитировать Сообщить модератору
 Re: Групирование, при создании вычисляемого поля на лету  [new]
Glory
Member

Откуда:
Сообщений: 104760
unsafe
Разумеется,

И вы увидели там имя поля, которое вызывает ошибку ?
И увидели, почему именно это поле вызывает ошибку ?
8 апр 16, 10:54    [19031407]     Ответить | Цитировать Сообщить модератору
 Re: Групирование, при создании вычисляемого поля на лету  [new]
unsafe
Member

Откуда:
Сообщений: 55
Ой, глупость какая...Это ж надо так облажатся первой созданной темой.
Спасибо, хорошего Вам дня.

SELECT Products.Name, SUM(Products.Price * Orders.Quentity) AS Total
FROM Orders LEFT JOIN Products ON Orders.ProductID=Products.ID
WHERE Products.Price * Orders.Quentity > 20
GROUP BY Products.Name


Но как то встречный вопрос возникает, что если мне понадобиться вывести и ID продукта?
8 апр 16, 10:57    [19031421]     Ответить | Цитировать Сообщить модератору
 Re: Групирование, при создании вычисляемого поля на лету  [new]
Glory
Member

Откуда:
Сообщений: 104760
unsafe
Но как то встречный вопрос возникает, что если мне понадобиться вывести и ID продукта?

Читать соообщение еще раз.
Там ясно указано, где и в каком виде можно использовать поля при GROUP BY
8 апр 16, 10:59    [19031435]     Ответить | Цитировать Сообщить модератору
 Re: Групирование, при создании вычисляемого поля на лету  [new]
unsafe
Member

Откуда:
Сообщений: 55
Glory, Спасибо ещё раз. Надо мне себя бичевать за невнимательность.
А есть к примеру нам нужно скрыть оборот наших товаров при запросе SELECT, то есть отображаться должны только колонки ID, Name. Как в таком случае это реализовать?
8 апр 16, 11:11    [19031509]     Ответить | Цитировать Сообщить модератору
 Re: Групирование, при создании вычисляемого поля на лету  [new]
Glory
Member

Откуда:
Сообщений: 104760
unsafe
А есть к примеру нам нужно скрыть оборот наших товаров при запросе SELECT, то есть отображаться должны только колонки ID, Name. Как в таком случае это реализовать?


Вы спрашиваете, как вам НЕ написать в тексте запроса то или иное поле/выражение
8 апр 16, 11:13    [19031518]     Ответить | Цитировать Сообщить модератору
 Re: Групирование, при создании вычисляемого поля на лету  [new]
unsafe
Member

Откуда:
Сообщений: 55
Сделано! Оставлю для таких ленивых как я.
Извините, если я Вам испортил настроение.
Glory,
SELECT Products.Name--, SUM(Products.Price * Orders.Quentity) AS Total
FROM Orders LEFT JOIN Products ON Orders.ProductID=Products.ID
GROUP BY Products.Name
HAVING SUM(Products.Price * Orders.Quentity) > 20
8 апр 16, 11:19    [19031562]     Ответить | Цитировать Сообщить модератору
 Re: Групирование, при создании вычисляемого поля на лету  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
unsafe
Сделано! Оставлю для таких ленивых как я.
Извините, если я Вам испортил настроение.
Glory,
SELECT Products.Name--, SUM(Products.Price * Orders.Quentity) AS Total
FROM Orders LEFT JOIN Products ON Orders.ProductID=Products.ID
GROUP BY Products.Name
HAVING SUM(Products.Price * Orders.Quentity) > 20
Что-то Glory и не в SELECTе, и ни в GROUP BY, и ни в агрегатной функции! :))
8 апр 16, 11:25    [19031611]     Ответить | Цитировать Сообщить модератору
 Re: Групирование, при создании вычисляемого поля на лету  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
unsafe,

для одного и того же Products.Name бывают записи с разными Products.ID?
То есть, могут ли разные продукты называться одинаково?
8 апр 16, 11:27    [19031620]     Ответить | Цитировать Сообщить модератору
 Re: Групирование, при создании вычисляемого поля на лету  [new]
unsafe
Member

Откуда:
Сообщений: 55
iap, Нет, разумеется нет...это у меня фантазия богатая :)
Хорошее свидание для первого дня на форуме))
8 апр 16, 11:44    [19031735]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить