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

Consulta dinámica UNION ALL en Postgres

Estas son solo pautas generales que necesita trabajar en los detalles, especialmente en la sintaxis.

Necesitas crear un procedimiento de tienda

Crea un bucle comprobando information_schema.tables filtra los nombres de tabla que quieras

DECLARE    
    rec record;
    strSQL text;
BEGIN

Luego crea un strSQL con cada tabla

 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;