Вывод количество значений из двух БД
у меня есть 2 БД: avia и avia_K обо БД одинаковые по таблицам
для avia сделал запрос для подсчета количество значений по session ([ЮТ], [ТКП], [S7])
а значение session [У6] находиться в второй БД то есть в avia_K
теперь мне нужно объединить 2 БД для того чтобы значение session [У6] тоже отображалась в запросе
как мне это сделать подскажите пожалуйста
вот мой запрос по таблице avia
select * from
(SELECT cast(a.DEALDATE as date) as date,
SUM(CASE WHEN a.Transactio like'%Продажа%' THEN +1 WHEN a.Transactio like'%Возврат%' THEN -1 END) as qtty,
a.session
FROM [avia].[dbo].[TICKET] as a
where (cast(a.DEALDATE as date)>='2021-05-11' and cast(a.DEALDATE as date)<='2021-05-20')
group by cast(a.DEALDATE as date), a.session) as x
pivot (
SUM(x.qtty)
FOR x.session IN ([ЮТ], [ТКП], [У6], [S7])
) piv
order by piv.date des
c
Ответы (1 шт):
Автор решения: Mike
→ Ссылка
select *
from (
SELECT cast(a.DEALDATE as date) as date,
SUM(CASE WHEN a.Transactio like'%Продажа%' THEN +1 WHEN a.Transactio like'%Возврат%' THEN -1 END) as qtty,
a.session
FROM (
select * from [avia].[dbo].[TICKET] as a
where (cast(a.DEALDATE as date)>='2021-05-11' and cast(a.DEALDATE as date)<='2021-05-20')
union all
select * from [avia_K].[dbo].[TICKET] as b
where (cast(b.DEALDATE as date)>='2021-05-11' and cast(b.DEALDATE as date)<='2021-05-20')
) as a
group by cast(a.DEALDATE as date), a.session) as x
pivot (
SUM(x.qtty)
FOR x.session IN ([ЮТ], [ТКП], [У6], [S7])
) piv
order by piv.date des
Еще стоит немного поправить where. колонки не желательно заключать в функции, это замедляет работу запросов, иногда сильно. Лучше написать что нибудь вроде
a.DEALDATE >='2021-05-11' and a.DEALDATE < DATEADD(day, 1, '2021-05-20')
Т.е. сравнивать вторую границу на строгое меньше, но следующего дня. (Если конечно тип данных колонки DEALDATE это позволяет)