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

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

« назад - далее »

Multicvet

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

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

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

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

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

Спасибо!

admin

#1
Доброго времени суток  :)
Вот как вариант, идея такая:
В таблице  старых клиентов ставим метку для тех, которые уже есть в новых клиентах, через таблицу сопоставления.
Затем отсекаем по проставленной метке тех кто имеет сопоставления и грузим тех, кто таких записей не имеет.
Код примера несложный, копируем и запускаем:

// Пример скрипта для форума 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


Яндекс.Метрика