Вопрос, как связать таблицы.

Автор Дима, 17 сентября 2017, 09:59:18

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

Дима

Здравствуйте, прошу помощи:

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

Есть ряд параметров (например, продукт, dpd), которые завязаны на номере_контракта.

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

Нелучилось (в загруженых таблицах есть записи с  ключем  и пустыми полями, при проверке на конкретную дату и для конкретного договора запись была и в таблице платежей и в таблице балансов).
Связал по номеру контракта (но поля дата обозвал в каждой таблице поразному) неполучается наложить фильтр на дату.

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


roman

Добавить данные в 1 таблицу с параметром concatenate, добавить поле ТипДанных (платежи/баланс) и на уровне выражений через сет анализ разрулить какие именно данные попадают в итоговые выражения?

millik

#2
Не совсем понял модель данный и какой фильтр вы хотите делать.

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

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


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));


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