sql >> Database >  >> RDS >> PostgreSQL

Voeg tabelnaam toe aan elke kolom in een resultaatset in SQL? (specifiek Postgres)

Ik weet dat deze vraag een beetje oud is, maar misschien struikelt iemand over het antwoord en helpt het.

De juiste manier om te doen wat u zoekt, is door een weergave te maken en te gebruiken. Ja, het zal een beetje vervelend zijn om eenmalig al die nieuwe kolomnamen als aliassen te typen, maar als er veel kolommen zijn, is hier een truc die je kunt gebruiken om de PostgreSQL-metadata te gebruiken om de tekst van de weergave te schrijven:

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

het uitvoeren van dit levert:

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

u kunt vervolgens de resultaten kopiëren en uitvoeren en 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] 


  1. De naam van een tabel in SQL Server wijzigen (T-SQL)

  2. Wat is de beste manier om een ​​reeks afbeeldingen op te slaan in MySQL?

  3. Oracle-datumnotatie

  4. dynamische Div-tags maken voor door AJAX-PHP-MySQL gegenereerde tabel