2015-04-01 4 views
0

У меня есть несколько таблиц с похожими именами, но с разными префиксами: us_cities, ca_cities и uk_cities. Каждая из этих таблиц состоит только из одного столбца (City_name). Я хочу, чтобы союз всех этих таблицы вместе и получить результат, как этот:динамическое имя таблицы в redshift

select 'US' as country, City_name from US_cities 
union all 
select 'CA' as country, City_name from CA_cities 
union all 
select 'UK' as country, City_name from UK_cities 

В будущем у меня будет больше столов города для большего числа стран, и я хочу, динамический запрос/представление, которое будет идентифицировать соответствующие таблицы (* _cities) и добавить их в запрос объединения. Как я могу это сделать в Redshift?

ответ

1

Таблицу information_schema.tables можно получить, чтобы получить список таблиц, соответствующих вашему соглашению об именах. Однако для замены вашего внешнего вида вам понадобится внешний процесс.

SELECT * FROM information_schema.tables WHERE table_name LIKE '%_cities'; 

ИМХО, вы бы гораздо лучше иметь один cities стол и с помощью представлений для создания конкретной страны версии. :)

+0

Вот как я понял, что должен это делать. К сожалению, я говорю о сторонних столах, которыми они управляют, поэтому я получаю их отдельно. спасибо –

Смежные вопросы