Объединение таблиц с заменой

Автор Multicvet, декабря 05, 2014, 07:21:27 pm

« предыдущая - следующая »

Multicvet

Требуется объединить клиентов в одну табличку. При этом если в таблице сопоставления есть правило замены старого клиента на нового, то заменить, если нет, то загрузить клиентов из таблиц.

Например, есть три таблички:
    Клиент новый
                - Клиент Н1
                - Клиент Н2

2)     Клиент старый
                - Клиент С1
                - Клиент С2

3)     |Сопоставление|
                - Клиент Н1 | Клиент С1 (т.е. С1 заменяем на Н1)

Какими лопатами-граблями можно добиться, следующей таблички:
Н1
Н2
С2

Спасибо!

admin

декабря 06, 2014, 10:58:00 pm #1 Последнее редактирование: декабря 08, 2014, 09:15:25 am от admin
Доброго времени суток  :)
Вот как вариант, идея такая:
В таблице  старых клиентов ставим метку для тех, которые уже есть в новых клиентах, через таблицу сопоставления.
Затем отсекаем по проставленной метке тех кто имеет сопоставления и грузим тех, кто таких записей не имеет.
Код примера несложный, копируем и запускаем:

// Пример скрипта для форума Qlikview & Qlik SENSE
ClientNew:
LOAD * INLINE [
    %IDN, NewClient
    n1, Клиент A
    n2, Клиент B
    n3, Клиент C
    n4, Клиент D
];

ClientOld:
LOAD * INLINE [
   %IDN, %IDO
    n3, o2
    n1, o4
];

right Join LOAD * INLINE [
    %IDO, OldClient
    o1, Клиент Ф
    o2, Клиент Ц
    o3, Клиент Л
    o4, Клиент А
];
STORE * from ClientOld into ClientOld.qvd(qvd);
drop Table ClientOld;

LOAD %IDO as [%IDN], OldClient as [NewClient]
FROM [ClientOld.qvd](qvd)
WHERE(IsNull(%IDN));

Multicvet


Рейтинг@Mail.ru Яндекс.Метрика