PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Prefixar o nome da tabela em cada coluna em um conjunto de resultados no SQL? (Postgres especificamente)


Eu sei que essa pergunta é um pouco antiga, mas talvez alguém tropece na resposta e isso os ajude.

A maneira correta de fazer o que você está procurando é criar e usar uma View. Sim, será um pouco tedioso digitar todos esses novos nomes de coluna como aliases, mas se houver muitas colunas, aqui está um truque que você pode usar para aproveitar os metadados do PostgreSQL para escrever o texto da exibição:
select 'CREATE OR REPLACE VIEW people AS SELECT ' || 
(select string_agg(column_name || ' AS person_' || column_name, ', ')
from information_schema.columns
where table_name = 'person'
group by table_name) || 
' FROM person;';

executando isso produz:
?column?                                                 
------------------------------------------------------------------------------------------------------------- 
CREATE OR REPLACE VIEW people AS SELECT last_name AS person_last_name, first_name AS person_first_name FROM person; 

1 record(s) selected [Fetch MetaData: 0/ms] [Fetch Data: 0/ms]
[Executed: 4/21/12 2:05:21 PM EDT ] [Execution: 9/ms]

você pode então copiar e executar os resultados e pronto:
select * from people;

 person_last_name     person_first_name    
 -------------------  -------------------- 
 Melvoin              Wendy                
 Coleman              Lisa                 

 2 record(s) selected [Fetch MetaData: 1/ms] [Fetch Data: 0/ms]