Redshift - использование вывода из вложенного запроса в качестве входного для другого запроса - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть вложенный запрос, который выглядит как

with q1 as (select * from table1), 
q2 as (select * from table2) 
select q1.col1, q2.col2,listagg(q1.id || ' - ' || q2.id, ', ') as unique_id  
from q1 join q2 on q1.id = q2.id;

Я пытаюсь использовать unique_id , полученный из вышеприведенного запроса, и запросить другую таблицу.

Может ли кто-нибудь подсказать мне, как я могу использовать этот новый столбец, созданный в приведенном выше запросе, который используется в качестве входных данных для другого запроса.Спасибо

Я использую Redshift DB.Спасибо

1 Ответ

0 голосов
/ 21 сентября 2018

Вы можете попробовать следующее:

create table table1(id int,col1 varchar(10));
create table table2(id int,col2 varchar(10));

insert into table1 values(1,'A');
insert into table1 values(2,'B');
insert into table2 values(1,'C');
insert into table2 values(2,'D');

with q(col1, col2, id1, id2) as
 (
  select q1.col1, q2.col2, q1.id as id1, q2.id as id2
  from table1 q1
  join table2 q2
    on q1.id = q2.id 
 )
select col1,col2,
       listagg(id1 || ' - ' || id2, ', ') within group ( order by id1 ) as unique_id
  from q
 group by col1,col2;

COL1    COL2    UNIQUE_ID
  A       C       1 - 1
  B       D       2 - 2

вам нужно добавить group by, как указал @Gordon, и функцию listagg нельзя использовать в одиночку.Итак, добавлено предложение within group ( order by ...

...