Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Ноябрь 21, 2017, 03:37:46 am

Автор Тема: Вопрос, как связать таблицы.  (Прочитано 206 раз)

Оффлайн Дима

  • Стажер
  • *
  • Сообщений: 1
  • Страна: ua
  • Рейтинг: +0/-0
    • Просмотр профиля
Вопрос, как связать таблицы.
« : Сентябрь 17, 2017, 09:59:18 am »
Здравствуйте, прошу помощи:

 Делаю отчет где есть
Таблица 1 с платежами (контракт, дата, сумма платежа)
Таблица 2 с балансами (контракт, дата, баланс по телу и тд.)

Есть ряд параметров (например, продукт, dpd), которые завязаны на номере_контракта.
 
Подскажите как  правильно связать таблицы,
Что бы фильтр накладывать на дату (год, мес., день).
Пробовал делать составной ключу
(  через “&”
  и
   Hash160(contract_id, date(date,'YYYY.MM.DD')) as Key     )
 
Нелучилось (в загруженых таблицах есть записи с  ключем  и пустыми полями, при проверке на конкретную дату и для конкретного договора запись была и в таблице платежей и в таблице балансов).
Связал по номеру контракта (но поля дата обозвал в каждой таблице поразному) неполучается наложить фильтр на дату.

Подскажите как это правильней сделать?
Заранее спасибо.


Оффлайн roman

  • Новичок
  • *
  • Сообщений: 8
  • Страна: ru
  • Рейтинг: +5/-0
    • Просмотр профиля
Re: Вопрос, как связать таблицы.
« Ответ #1 : Сентябрь 18, 2017, 05:26:58 am »
Добавить данные в 1 таблицу с параметром concatenate, добавить поле ТипДанных (платежи/баланс) и на уровне выражений через сет анализ разрулить какие именно данные попадают в итоговые выражения?

Оффлайн millik

  • Наставник
  • **
  • Сообщений: 53
  • Страна: by
  • Рейтинг: +22/-0
    • Просмотр профиля
Re: Вопрос, как связать таблицы.
« Ответ #2 : Сентябрь 19, 2017, 10:37:29 am »
Не совсем понял модель данный и какой фильтр вы хотите делать.

Для работы с датами лучше создавать отдельную таблицу, так называемый "Мастер календарь". А в остальных таблицам будет общее поле с календарём. Тогда при выборе любого периода в календаре, выборка затронет все данные приложения.

Простенький МастерКалендарь

Temp:
Load
Max(ДатаКод) as MaxDate
Resident РегистрДвижений;

Let vMaxDate = Floor(Peek('MaxDate'));

МастерКалендарь:
Load
Num(Дата) as ДатаКод,
Date(Дата,'DD.MM.YYYY') as Дата,
Year(Дата) as Год,
'Q' & Num(Ceil(Num(Month(Дата))/3)) as Квартал,
Month(Дата) as Месяц,
'W' & Num(Week(Дата),00) as Неделя,
WeekDay(Дата) as ДеньНедели,
'D' & Day(Дата) as День,
Left(Month(Дата),3) & '-' & Year(Дата) as ГодМесяц,
Year(Дата) & '-W' & Num(Week(Дата),00) & ' (' &  Left(WeekStart(Дата),5) & '-' & Left(WeekEnd(Дата),5) & ')' as ГодНеделя,
Year(Дата) & '-Q' & Num(Ceil(Num(Month(Дата))/3)) as ГодКвартал,
WeekStart(Дата) as НачалоНедели,
WeekEnd(Дата) as КонецНедели,
MonthStart(Дата) as НачалоМесяца, 
MonthEnd(Дата) as КонецМесяца,
QuarterStart(Дата) as НачалоКвартала,
QuarterEnd(Дата) as КонецКвартала;
Load
Date('01.01.2017','YYYYMMDD')+(Iterno()-1) as Дата
Autogenerate 1
//While Date('01.01.2017','YYYYMMDD')+(Iterno()-1) <= Date(Today());
While Date('01.01.2017','YYYYMMDD')+(Iterno()-1) <= Date($(vMaxDate));

Неофициальный форум пользователей QlikView & Qlik Sense

Re: Вопрос, как связать таблицы.
« Ответ #2 : Сентябрь 19, 2017, 10:37:29 am »