Per favore non farlo:guarda prima le alternative, iniziando con partizionamento ed esclusione di vincoli .
Se devi utilizzare nomi di tabelle dinamici, fallo a livello di applicazione durante la generazione della query.
Se tutto il resto fallisce puoi usare una procedura PL/PgSQL come:
CREATE OR REPLACE pleasedont(int year) RETURNS TABLE basetable AS $$
BEGIN
RETURN QUERY EXECUTE format('SELECT col1, col2, col3 FROM %I', 'basetable_'||year);
END;
$$ LANGUAGE plpgsql;
Funzionerà solo se hai una tabella di base che ha la stessa struttura delle sottotabelle. È anche molto doloroso lavorare con quando inizi ad aggiungere qualificatori (dove vincoli di clausola, ecc.) e impedisce qualsiasi tipo di memorizzazione nella cache del piano o uso efficace delle istruzioni preparate.