Динамическое имя столбца сопоставляется с другой таблицей для копирования данных - PullRequest
0 голосов
/ 21 сентября 2018

Исходная таблица содержит данные за последние 2 года, например:

column name: aug_16, sep_16 ... oct_17 ... jul_18, aug_18

Имя столбца меняется каждый месяц - добавляется один столбец, а другой удаляется.

Например, в следующем месяцестолбец начинается с: sep_16 до sep_18, что означает, что aug_16 будет удалено и будет добавлено sep_18.

Итак, моя проблема: я хочу скопировать данные в другую таблицу Interfaceи хотите сделать отображение в заданиях ODI перед загрузкой в ​​базовую таблицу.Как мне обрабатывать динамическое имя столбца?

1 Ответ

0 голосов
/ 21 сентября 2018

Я бы сказал, что ваш лучший вариант - отказаться от такой модели данных и создать новую.Вместо того, чтобы делать все в DDL, делайте это в DML.Что я хочу сказать: измените таблицу и добавьте столбец типа данных DATE.Он покажет, к какому месяцу / году принадлежит этот ряд.Тогда это просто вопрос предложения WHERE, которое будет обрабатывать данные.

Instead of: update interface set sep_16 = (select sep_16 from base)

You would : insert into interface select * from base
                                  where to_char(date_column, 'yyyymm') = '201609'

Это всего лишь пример, написанный для простоты общей идеи;такой WHERE будет разрушать возможный индекс на DATE_COLUMN, но с этим можно справиться (например, используя BETWEEN первый и последний день месяца)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...