Здравствуйте!
Как сделать запрос в posgresql вида
Select x FROM *
Где * была разная таблица исходя из ввдоных условий
SELECT x FROM CASE WHEN a=2 THEN table1 ELSE table2 END
не работает.
SQL — декларативный язык, сущности должны быть определены на этапе синтаксического разбора запроса.
Синтаксиса подобного вашему нет.
Решается динамическим построением запроса (PL/pgSQL или любой другой PL) или же формированием запроса на стороне клиента,
т.е. условия вычисляете в приложении.
Однако, можно сформировать SQL-запрос в виде строки (тип text), получить его клиентом и отправить обратно базе на исполнение.
В частности, родной клиент psql имеет псевдо-команду \gexec, которая (1) исполняет запрос (2) получает ответ от базы и (3) отсылает ответ обратно в виде нового запроса.
--