Сначала программно пробежаться по метаданным и найти там нужную таблицу значений. Собрать их наименования, а потом в цикле сформировать текст запроса.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший