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

Откуда:
Сообщений: 2
Добрый день, нужно объединить три запроса с функцией SUM.
Читал что UNION запрещает использовать агрегатные функции, может есть другой подход ?

(SELECT    Обьекты.id, Обьекты.Название, sum(Потребность.Потребность_количество) AS suma1
FROM        Потребность   Full JOIN СГ
ON Обьекты.id = Потребность.Группа GROUP BY Обьекты.Название, Обьекты.id)
UNION ALL                       
(SELECT    Обьекты.id, Обьекты.Название , sum(Потребность.Потребность_количество) AS suma2
FROM        Потребность   Full JOIN СГ
ON Обьекты.id = Потребность.Класс GROUP BY Обьекты.Название, Обьекты.id)
UNION ALL                     
(SELECT    Обьекты.id, Обьекты.Название , sum(Потребность.Потребность_количество) AS suma3
FROM        Потребность   Full JOIN СГ
ON Обьекты.id = Потребность.Обьект_id GROUP BY Обьекты.Название, Обьекты.id);


В результате должна получится таблица с заголовками id, Название, sum1, sum2, sum3.
Пока выводит только sum1.
21 дек 15, 12:41    [18587932]     Ответить | Цитировать Сообщить модератору
 Re: Объединение запросов с функцией SUM  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
а зачем так делать?
не проще ли в олдном запросе через case
21 дек 15, 12:43    [18587953]     Ответить | Цитировать Сообщить модератору
 Re: Объединение запросов с функцией SUM  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20614
DenisA29
должна получится таблица с заголовками id, Название, sum1, sum2, sum3.

С нулями в незадействованных полях записей? добавь необходимые литеральные поля.
21 дек 15, 12:46    [18587993]     Ответить | Цитировать Сообщить модератору
 Re: Объединение запросов с функцией SUM  [new]
Glory
Member

Откуда:
Сообщений: 104760
DenisA29
Читал что UNION запрещает использовать агрегатные функции,

вы придумываете. нигде не написано, что UNION запрещает использовать агрегатные функции
21 дек 15, 12:48    [18588000]     Ответить | Цитировать Сообщить модератору
 Re: Объединение запросов с функцией SUM  [new]
StarikNavy
Member

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

если с case лень разбираться
select id,Название, sum(suma1) as suma1, sum(suma2) as suma3, sum(suma3) as suma3
from
(SELECT    Обьекты.id, Обьекты.Название, sum(Потребность.Потребность_количество) AS suma1 , 0 as suma2, 0 as suma3
FROM        Потребность   Full JOIN СГ
ON Обьекты.id = Потребность.Группа GROUP BY Обьекты.Название, Обьекты.id)
UNION ALL                       
(SELECT    Обьекты.id, Обьекты.Название ,0 AS suma1, sum(Потребность.Потребность_количество) AS suma2,0 suma3
FROM        Потребность   Full JOIN СГ
ON Обьекты.id = Потребность.Класс GROUP BY Обьекты.Название, Обьекты.id)
UNION ALL                     
(SELECT    Обьекты.id, Обьекты.Название ,0 AS suma1,0 AS suma2, sum(Потребность.Потребность_количество) AS suma3
FROM        Потребность   Full JOIN СГ
ON Обьекты.id = Потребность.Обьект_id GROUP BY Обьекты.Название, Обьекты.id)

)as tt
group by
id,Название
21 дек 15, 12:52    [18588029]     Ответить | Цитировать Сообщить модератору
 Re: Объединение запросов с функцией SUM  [new]
DenisA29
Member

Откуда:
Сообщений: 2
Спасибо, все получилось.
21 дек 15, 14:09    [18588474]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить