PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Query dinamica UNION ALL in Postgres

Queste sono solo linee guida generali di cui hai bisogno per lavorare sui dettagli, in particolare sulla sintassi.

Devi creare una procedura negozio

Crea un ciclo che controlla information_schema.tables filtro per i nomi delle tabelle che desideri

DECLARE    
    rec record;
    strSQL text;
BEGIN

Quindi crea uno strSQL con ogni tabella

 FOR rec IN SELECT table_schema, table_name
            FROM information_schema.tables                
 LOOP
     strSQL := strSQL || 'SELECT ogc_fid, wkb_geometry FROM ' || 
               rec.table_schema || '.' || rec.table_name || ' UNION ';
 END LOOP;

-- have to remove the last ' UNION ' from strSQL    

strSQL := 'SELECT  row_number() over (ORDER BY a.ogc_fid) AS qid,
         a.wkb_geometry AS geometry FROM (' || strSQL || ')';

EXECUTE strSQL;