Как объединить два запроса, сохранив «Город» в качестве фильтра для первого столбца - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь объединить эти два отдельных запроса. Каждый из них по-своему работает. Один для 2019 года, а другой для 2018 года. Я пытаюсь получить всего 7 столбцов. Первый - «город», в котором оба запроса совместно используют, а затем еще 6 столбцов (3 для 2019 и 3 для 2018). Спасибо за вашу помощь!

Я пытался использовать объединение, но я считаю, что мой синтаксис отключен

select
"City",
"2019 AAA",
"2019 BBB",
"2019 CCC",
"2018 AAA",
"2018 BBB",
"2018 CCC"

from (
coalesce(city, 'Total') as "City", 
    sum(reservations.number_of_nights) as "2019 AAA",
    sum(reservations.accommodation_fare+reservations.cleaning_fee)/sum(reservations.number_of_nights) as "2019 BBB",
    sum(reservations.accommodation_fare+reservations.cleaning_fee) as "2019 CCC"
    from reservations
        join listings on reservations.listings_id = listings.id
        where status = 'confirmed' 
        and ((reservations.check_in_datetime at time zone 'EDT')::timestamp::date > '2019-04-30') 
        and (reservations.check_in_datetime at time zone 'EDT')::timestamp::date < '06-01-2019' 
        and (reservation_confirmed_at at time zone 'EDT')::timestamp::date < '05-27-2019'
        and city <> 'XXXX'
        and reservations.deleted_at is null
            group by rollup(city)
    ) as t2019
Join (
select  coalesce(city, 'Total') as "City", 
    sum(reservations.number_of_nights) as "2018 AAA",
    sum(reservations.accommodation_fare+reservations.cleaning_fee)/sum(reservations.number_of_nights) as "2018 BBB",
    sum(reservations.accommodation_fare+reservations.cleaning_fee) as "2018 CCC"
    from reservations
        join listings on reservations.listings_id = listings.id
        where status = 'confirmed' 
        and ((reservations.check_in_datetime at time zone 'EDT')::timestamp::date > '2018-04-30') 
        and (reservations.check_in_datetime at time zone 'EDT')::timestamp::date < '06-01-2018' 
        and (reservation_confirmed_at at time zone 'EDT')::timestamp::date < '05-28-2018'
        and city <> 'XXXX'
        and reservations.deleted_at is null
            group by rollup(city)
) as t2018
on t2018.City = t2019.City
order by city asc;

1 Ответ

0 голосов
/ 03 июня 2019

В вашем скрипте отсутствует команда SELECT. Пожалуйста, попробуйте добавить SELECT, как показано ниже -

select
"City",
"2019 AAA",
"2019 BBB",
"2019 CCC",
"2018 AAA",
"2018 BBB",
"2018 CCC"

from ( SELECT -- This select is missing
coalesce(city, 'Total') as "City", 
....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...