Я пытаюсь получить доступ к таблице, которая воссоздается в новой базе данных каждый квартал. Имя таблицы остается прежним, но создается новое имя базы данных.
Я пытаюсь добиться использования оператора select для включения переменной, которая будет смотреть на конкретную базу данных с диапазоном от Q317 до Q119. На данный момент у меня настроен код выбора, но я должен повторно использовать тот же код, но изменить квартал для каждой базы данных. Есть ли более эффективный способ сделать это, чем я сейчас занимаюсь?
Чтобы усложнить задачу, значение Quarter должно быть строкой, а не целым числом.
Как видите, я не эксперт, и я пытался передать переменные в строку, которая работает, но мне не удается успешно ее повторить.
declare @tablename varchar(50)
set @tablename = '2'
EXEC('SELECT DISTINCT [GAELTACHT] FROM [EDB_Q' + @tablename + '18].[dbo].[POSTAL_ADDRESS]')
Это упрощенная версия того, с чем я сейчас работаю, но только для демонстрации баз данных, с которыми я работаю.
SELECT 'Q119' AS Quarter, Count(BUILDING_ID) FROM Towns.CITY_Q119
UNION ALL
SELECT 'Q418' AS Quarter, Count(BUILDING_ID) FROM Towns.CITY_Q418
UNION ALL
SELECT 'Q318' AS Quarter, Count(BUILDING_ID) FROM Towns.CITY_Q318
UNION ALL
SELECT 'Q218' AS Quarter, Count(BUILDING_ID) FROM Towns.CITY_Q218
UNION ALL
SELECT 'Q118' AS Quarter, Count(BUILDING_ID) FROM Towns.CITY_Q118
UNION ALL
SELECT 'Q417' AS Quarter, Count(BUILDING_ID) FROM Towns.CITY_Q417
В идеале, я хотел бы иметь 1 оператор select, который каким-то образом итерирует (но использует строку на целых числах) от значений 218 до 119. Я не знаю, возможно ли то, что я запрашиваю?