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

Откуда:
Сообщений: 566
Добрый день!
Подскажите, пожалуйста, как организовать запрос получения сумм двух разных столбцов разных таблиц.
Например,имеем таблицы
T1 TName (IDName,Name)-наименование товаров,
T2 TOstatok (ID,IDName,Ostatok) - таблица с остатками,
T3 TReserv (ID,IDName,Reserv) - таблица с резервами.
Если делать
Select t1.Name,SUM(t2.Ostatok) From TName T1 Left Join TOStatok T2 ON T1.IDName=T2.IDName GROUP BY  t1.Name

здесь все понятно и все считает как нужно. Напротив каждого наименования - остаток.
Необходимо добавить еще сумму по резервам.Если использовать Left Join то "расползутся" остатки.Как составить запрос?
Select t1.Name,SUM(t2.Ostatok),SUM(t3.Reserv) From TName ...
20 мар 15, 10:16    [17408439]     Ответить | Цитировать Сообщить модератору
 Re: суммы из двум столбцам разных таблиц  [new]
Glory
Member

Откуда:
Сообщений: 104751
Lexx_SQL
Если использовать Left Join то "расползутся" остатки.Как составить запрос?

Сначала просуммировать, а потом уже делать Left Join

Сообщение было отредактировано: 20 мар 15, 10:19
20 мар 15, 10:19    [17408450]     Ответить | Цитировать Сообщить модератору
 Re: суммы из двум столбцам разных таблиц  [new]
`
Guest
нужно сгруппировать и проссумировать в подзапросах, а потом уже их джойнить
20 мар 15, 10:19    [17408452]     Ответить | Цитировать Сообщить модератору
 Re: суммы из двум столбцам разных таблиц  [new]
Lexx_SQL
Member

Откуда:
Сообщений: 566
Glory,
Если я правильно понял вместо "Left Join TOStatok T2" нужно написать "Left Join (Select SUM(t2.Ostatok) FROM ...)"?
Если я не прав, можно небольшой пример.
Спасибо.
20 мар 15, 10:50    [17408615]     Ответить | Цитировать Сообщить модератору
 Re: суммы из двум столбцам разных таблиц  [new]
Glory
Member

Откуда:
Сообщений: 104751
Lexx_SQL
Если я правильно понял вместо "Left Join TOStatok T2" нужно написать "Left Join (Select SUM(t2.Ostatok) FROM ...)"?

И еще вместо первой таблицы тоже будет аналогичный подзапрос
20 мар 15, 10:51    [17408624]     Ответить | Цитировать Сообщить модератору
 Re: суммы из двум столбцам разных таблиц  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4805
Glory
Lexx_SQL
Если использовать Left Join то "расползутся" остатки.Как составить запрос?

Сначала просуммировать, а потом уже делать Left Join


Плюс к этому вам возможно надо делать не LEFT, а FULL JOIN. Это зависит от характера ваших данных.
20 мар 15, 12:38    [17409387]     Ответить | Цитировать Сообщить модератору
 Re: суммы из двум столбцам разных таблиц  [new]
гр к
Guest
a_voronin
Glory
пропущено...

Сначала просуммировать, а потом уже делать Left Join


Плюс к этому вам возможно надо делать не LEFT, а FULL JOIN. Это зависит от характера ваших данных.

+1
Бывает, что есть позиции на складе, но нет в продаже. И наоборот.
Так что навроде этого:
select coalesce (o.id, r.id) sid,  coalesce (o.os,0) ost, coalesce (r.re,0) res
from
(select id, sum(ostatok) os from osrarok group by id)  o 
full join 
(select id, sum(reserve) re from reserv group by id) r 

ЗЫ За правильность не ручаюсь, но мысль понятна.
20 мар 15, 14:02    [17409885]     Ответить | Цитировать Сообщить модератору
 Re: суммы из двум столбцам разных таблиц  [new]
гр к
Guest
Коррзка
select coalesce (o.id, r.id) sid,  coalesce (o.os,0) ost, coalesce (r.re,0) res
from
(select id, sum(ostatok) os from osrarok group by id)  o 
full join 
(select id, sum(reserve) re from reserv group by id) r on r.id = o.id
20 мар 15, 14:06    [17409897]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить