SQL Server: как получить данные из нескольких динамических таблиц?

Использование SQL-сервера.

База данных содержит данные за разные годы, так или иначе я хочу получить все данные (все годы) и показать пользователю, например, база данных содержит таблицу:

table
--------
records_2000_01
records_2000_02
records_2000_03
...

теперь выберите TABLE_NAME в @tableName из information_schema.tables, где table_name, например, «records_%»

Я могу получить все имена таблиц, как написать SQL (или, возможно, процедуру) для получения всех данных из этих таблиц? сделать все записи в одну таблицу?

Спасибо.


person Sheldon Rong    schedule 15.12.2011    source источник
comment
возможный дубликат Как я могу сделать этот запрос для принимать имена динамических таблиц?   -  person Conrad Frix    schedule 15.12.2011


Ответы (1)


Создайте процедуру в следующих шагах, которые вам необходимо выполнить.

  • Create table Common_Table с одной и той же структурой, которой вся ваша таблица, например, records_2000_02 и другие.
  • Используйте цикл или курсор для всех записей, которые вы получаете из information_schema, которые соответствуют имени вашей таблицы.
  • Create dynamic sql like ' Insert into your Common_Table select * from ' + Table_name that you get from Information_schema.
    • Then you get all your data in one table Common_Table
person KuldipMCA    schedule 15.12.2011
comment
да, у меня это уже работает, но я пока не могу опубликовать ответ, так как моя репутация слишком низкая, я не могу ответить на свой вопрос .... что это за чертовщина: P - person Sheldon Rong; 16.12.2011
comment
Вам может потребоваться регулярно посещать сайт и вносить свой вклад в сообщество, чтобы получить больше репутации, и вы сможете делать это в будущем. - person KuldipMCA; 16.12.2011