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

Откуда:
Сообщений: 7
Table 1.

Select IDFrom,OtKoqo from TOtKoqo



IDFrom	OtKoqo
1	User 1
2	User 2
3	User 3
4	User 4


Table 2

select IDFrom,Data,Prodaja from TProdaja_Sum


IDFrom	Data	Prodaja_Sum
1	01.01.2015	400
2	01.01.2015	500
1	05.02.2015	200
2	05.02.2015	200
3	08.03.2015	400
1	09.03.2015	530
3	09.03.2015	430
4	09.03.2015	500



Table 3

select IDFrom,Data,Oplata_Sum from TOplata


IDFrom	Data	Oplata_Sum
1	05.05.2015	100
2	05.05.2015	50
3	05.09.2015	80
1	09.09.2015	90
2	10.10.2015	20
3	10.10.2015	100
1	15.10.2015	30
2	15.10.2015	50


хотел получить следующий резултат

IDFrom	OtKoqo	Prodaja_Sum	Oplata_Sum
1	User 1	1130	         220
2	User 2	700	         120
3	User 3	830	         180
4	User 4	500	         NULL


для этого напишу следующий код но не получается

select k.IDFrom,k.OtKoqo, sum(Prodaja_Sum) as Prodaja_Sum,sum (Oplata_sum) as Oplata_Sum
from TOtKoqo k left join TProdaja_Sum p  on k.IDFrom=p.IDFrom
                              left join TOplata o on k.IDFrom=o.IDFrom
group by k.IDFrom,k.OtKoqo
26 окт 15, 20:39    [18329951]     Ответить | Цитировать Сообщить модератору
 Re: Help Please  [new]
Serg_77m
Member

Откуда: Донецк
Сообщений: 237
Cahandar,

Вариант 1:
select a.IDFrom,b.OtKoqo,a.Prodaja_Sum,a.Oplata_Sum
from (
  select IDFrom,sum(Prodaja_Sum) as Prodaja_Sum,sum(Oplata_Sum) as Oplata_Sum
  from (
    select IDFrom,Prodaja_Sum,0 as Oplata_Sum from TProdaja_Sum
    union all
    select IDFrom,0,Oplata_Sum from TOplata
  ) a
  group by IDFrom
) a
  left join TOtKoqo b on b.IDFrom=a.IDFrom


Вариант 2 (его ещё можно написать с outer apply):
select a.IDFrom,a.OtKoqo,
  (select sum(Prodaja_Sum) from TProdaja_Sum b where b.IDFrom=a.IDFrom) as Prodaja_Sum,
  (select sum(Oplata_Sum) from TOplata b where b.IDFrom=a.IDFrom) as Oplata_Sum
from TOtKoqo a
26 окт 15, 20:51    [18330000]     Ответить | Цитировать Сообщить модератору
 Re: Help Please  [new]
Cahandar
Member

Откуда:
Сообщений: 7
Большое спасибо попробовал Вариант 2
26 окт 15, 21:02    [18330049]     Ответить | Цитировать Сообщить модератору
 Re: Help Please  [new]
Serg_77m
Member

Откуда: Донецк
Сообщений: 237
Cahandar, из условия непонятно, что делать с теми User'ами, у которых есть запись в TOtKoqo, но нет ни продаж, ни оплат. В первом варианте их вообще не будет в выборке, а во втором - будут с двумя NULL'ами. Как правильно - не знаю, но подозреваю, что они там не нужны.
26 окт 15, 21:15    [18330101]     Ответить | Цитировать Сообщить модератору
 Re: Help Please  [new]
Cahandar
Member

Откуда:
Сообщений: 7
спасибо вам
26 окт 15, 21:33    [18330162]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить