У меня есть две таблицы (a, b) или объединяющая их таблица с одинаковыми именами столбцов. (Таблица (таблицы) широкая, имеет около ста столбцов.)
Использование:
SELECT a.*, b.*
FROM a LEFT JOIN b ON b.id=a.id AND b.date1=a.date2;
... работает, но теперь, если я хочу сделать из него представление:
CREATE OR REPLACE VIEW v_test_ab AS
SELECT a.*, b.*
FROM a LEFT JOIN b ON b.id=a.id AND b.date1=a.date2;
... он не может создать представление, потому что будет несколько столбцов с одинаковым именем.
В PostgreSQL, есть ли способ автоматически переименовать столбец имена таблицы результатов с использованием заданного шаблона?
Пример примерно такой:
CREATE OR REPLACE VIEW v_test_ab AS
SELECT a.* AS a_*, b.* AS b_*
FROM a LEFT JOIN b ON b.id=a.id AND b.date1=a.date2;
Или, возможно, что-то вроде:
SELECT a.* AS generate_column_names('a_%', a.*)
, b.* AS generate_column_names('b_%', b.*)
Избегать необходимости писать :
CREATE OR REPLACE VIEW v_test_ab AS
SELECT
a.id as a_id, a.date1 as a_date1, a.date2 as a_date2 -- and so on
, b.id as b_id, b.date1 as b_date1, b.date2 as b_date2 -- and so on
FROM a LEFT JOIN b ON b.id=a.id AND b.date1=a.date2;
Конечно, я могу использовать поиск и замену шаблонов в IDE-редакторе, но конечный результат выглядит раздутым. (Реальный случай, который у меня есть, имеет четыре широкие исходные таблицы с множеством одинаковых имен столбцов.)