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

Откуда:
Сообщений: 7
select  count([DebetEnd]) as vykor1
		,sum([DebetEnd]) as suma1
	from ##temp	
	where [Period] = '201906' and [DebetBegin] = 0 and [DebetEnd] >= 1000

select 	count([DebetBegin]) as vykor2
		,sum([DebetEnd]) as suma2
	from ##temp 
where [DebetBegin]>=1000 and Period = '201906'


есть так
vykor1              suma1
77 159737.95
vykor2              suma2
1521 2473121.25

надо сделать вот так
vykor1       suma1            vykor2	    sum2
77 159737.95 1521 2473121.25
29 июл 19, 15:47    [21936949]     Ответить | Цитировать Сообщить модератору
 Re: как объединить 2 select`a  [new]
court
Member

Откуда:
Сообщений: 1832
select 	count([DebetBegin]) as vykor2
		,sum([DebetEnd]) as suma2
                ,sum(case when [DebetBegin] = 0 then 1 end) as vykor1
		,sum(case when [DebetBegin] = 0 then [DebetEnd] end) as suma1
	from ##temp 
where [DebetBegin]>=1000 and Period = '201906'
29 июл 19, 15:59    [21936965]     Ответить | Цитировать Сообщить модератору
 Re: как объединить 2 select`a  [new]
Gc2112
Member

Откуда: USA, PA
Сообщений: 450
Valeri2008,
select a.vykor1
,      a.suma1
,      b.vykor2
,      b.suma2


from       (

select 1                    ID
,      count([DebetEnd]) as vykor1
,      sum([DebetEnd])   as suma1
from ##temp
where [Period] = '201906' and [DebetBegin] = 0 and [DebetEnd] >= 1000 ) a
inner join (
	select 1                      ID
	,      count([DebetBegin]) as vykor2
	,      sum([DebetEnd])     as suma2
	from ##temp
	where [DebetBegin]>=1000 and Period = '201906')                     b on a.ID = b.ID
29 июл 19, 16:02    [21936967]     Ответить | Цитировать Сообщить модератору
 Re: как объединить 2 select`a  [new]
Valeri2008
Member

Откуда:
Сообщений: 7
Gc2112,
спс все работает.
Тема закрыта
29 июл 19, 16:04    [21936969]     Ответить | Цитировать Сообщить модератору
 Re: как объединить 2 select`a  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6695
что интересно оба нерабочие

[DebetBegin] = 0

+ where [DebetBegin]>=1000

и

[DebetBegin] = 0 - ноль и ноль результат
29 июл 19, 16:08    [21936973]     Ответить | Цитировать Сообщить модератору
 Re: как объединить 2 select`a  [new]
court
Member

Откуда:
Сообщений: 1832
Gc2112
Valeri2008,
select a.vykor1
,      a.suma1
,      b.vykor2
,      b.suma2


from       (

select 1                    ID
,      count([DebetEnd]) as vykor1
,      sum([DebetEnd])   as suma1
from ##temp
where [Period] = '201906' and [DebetBegin] = 0 and [DebetEnd] >= 1000 ) a
inner join (
	select 1                      ID
	,      count([DebetBegin]) as vykor2
	,      sum([DebetEnd])     as suma2
	from ##temp
	where [DebetBegin]>=1000 and Period = '201906')                     b on a.ID = b.ID
right join наверное всё-таки
Не окажется у ТСа в каком-нибудь периоде данных с [DebetBegin] = 0 и запрос вообще ничего не вернёт ...
29 июл 19, 16:10    [21936977]     Ответить | Цитировать Сообщить модератору
 Re: как объединить 2 select`a  [new]
court
Member

Откуда:
Сообщений: 1832
TaPaK
что интересно оба нерабочие
точно :)

select 	sum(case when [DebetBegin]>=1000 then 1 end) as vykor2
		,sum(case when [DebetBegin]>=1000 then [DebetEnd] end) as suma2
                ,sum(case when [DebetBegin] = 0 and [DebetEnd] >= 1000 then 1 end) as vykor1
		,sum(case when [DebetBegin] = 0 and [DebetEnd] >= 1000 then [DebetEnd] end) as suma1
	from ##temp 
where ([DebetBegin]>=1000 or [DebetEnd] >= 1000) and Period = '201906'
29 июл 19, 16:20    [21936988]     Ответить | Цитировать Сообщить модератору
 Re: как объединить 2 select`a  [new]
Valeri2008
Member

Откуда:
Сообщений: 7
court,
там я проверил и райт и лефт, и просто inner join результат одинаковый, просто надогадался забросить в разные области, а потом объединить джоином
29 июл 19, 16:24    [21936995]     Ответить | Цитировать Сообщить модератору
 Re: как объединить 2 select`a  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6695
Valeri2008
court,
там я проверил и райт и лефт, и просто inner join результат одинаковый, просто надогадался забросить в разные области, а потом объединить джоином

мда
29 июл 19, 16:27    [21936997]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить