PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Tabellennamen jeder Spalte in einer Ergebnismenge in SQL voranstellen? (Postgres speziell)

Ich weiß, diese Frage ist etwas alt, aber vielleicht stolpert jemand über die Antwort und es hilft ihnen weiter.

Der richtige Weg, das zu tun, wonach Sie suchen, besteht darin, eine Ansicht zu erstellen und zu verwenden. Ja, es wird etwas mühsam sein, all diese neuen Spaltennamen einmalig als Aliase einzugeben, aber wenn es viele Spalten gibt, können Sie mit diesem Trick die PostgreSQL-Metadaten nutzen, um den Text der Ansicht zu schreiben:

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

Wenn Sie dies ausführen, erhalten Sie:

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

Sie können dann die Ergebnisse kopieren und ausführen und voila:

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]