postgreSQL ошибка запроса с объединением с подзапросом - PullRequest
0 голосов
/ 01 марта 2020

это в postgreSQL, вот таблица:

create type platform as enum ('desktop', 'mobile');
create table spending (
user_id int,
spend_date date,
platform platform,
amount int
);

alter table spending
add primary key (user_id, spend_date, platform);

insert into spending values
(1, '2019-07-01', 'mobile', 100), 
(1, '2019-07-01', 'desktop', 100), 
(2, '2019-07-01', 'mobile', 100), 
(2, '2019-07-02', 'mobile', 100), 
(3, '2019-07-01', 'desktop', 100), 
(3, '2019-07-02', 'desktop', 100);

пытается получить все уникальные даты и перекрестное объединение с помощью подзапроса, который генерирует простую таблицу с «desktop», «mobile», и «оба». вот запрос:

select distinct s.spend_date, 
       t.platform 
from spending s join (select 'desktop' platform union 
                      select 'mobile' platform union 
                      select 'both' platform) t;

error:

ERROR:  syntax error at or near ";"
LINE 5:        select 'both' platform) t;

потратил некоторое время на это, но все еще не могу понять ошибку. пожалуйста, помогите!

1 Ответ

0 голосов
/ 01 марта 2020

Вам нужен псевдоним таблицы и условие join. Кроме того, values() проще. Возможно:

select s.spend_date, v.platform 
from spending s cross join
     (values ('desktop'), ('mobile'), ('both')
     ) v(platform);

Я заменил join на cross join, поэтому предложение on не требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...