sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Agregar el nombre de la tabla a cada columna en un conjunto de resultados en SQL? (Postgres específicamente)

Sé que esta pregunta es un poco antigua, pero tal vez alguien encuentre la respuesta y le ayude.

La forma correcta de hacer lo que está buscando es crear y usar una Vista. Sí, será un poco tedioso una sola vez escribir todos esos nuevos nombres de columna como alias, pero si hay muchas columnas, aquí hay un truco que puede usar para aprovechar los metadatos de PostgreSQL para escribir el texto de la vista:

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;';

ejecutar esto produce:

?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]

luego puede copiar y ejecutar los resultados y listo:

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]