Вывод количество значений из двух БД

у меня есть 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 это позволяет)

→ Ссылка