Нет встроенного в язык способа ее решения (и, честно говоря, * это вообще плохая практика, потому что это может привести к возникновению скрытых дефектов при изменении схем таблиц - вы можете сделать table1. *, Table2.acolumn, tabl2.bcolumn, если вам нужна вся одна таблица и выборочно из другой), но если PostgreSQL поддерживает INFORMATION_SCHEMA, вы можете сделать что-то вроде:
DECLARE @sql AS varchar
SELECT @sql = COALESCE(@sql + ', ', '')
+ '[' + TABLE_NAME + '].[' + COLUMN_NAME + ']'
+ CHAR(13) + CHAR(10)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME IN ('table1', 'table2')
ORDER BY TABLE_NAME, ORDINAL_POSITION
PRINT @sql
И вставьте результаты, чтобы сэкономить много печатать. Конечно, вам нужно будет вручную создать псевдоним столбцов с одинаковыми именами. Вы также можете кодировать уникальные имена, если хотите (но мне не нравится):
SELECT @sql = COALESCE(@sql + ', ', '')
+ '[' + TABLE_NAME + '].[' + COLUMN_NAME + '] '
+ 'AS [' + TABLE_NAME + '_' + COLUMN_NAME + ']'
+ CHAR(13) + CHAR(10)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME IN ('table1', 'table2')
ORDER BY TABLE_NAME, ORDINAL_POSITION