powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Выборка на основе таблицы с шаблонными данными.
3 сообщений из 3, страница 1 из 1
Выборка на основе таблицы с шаблонными данными.
    #39831002
AVRomanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Имеется 2 таблицы.

1 таблица - это актуальные данные по клиентам, в которых есть некоторые поля.
LOAN_CL EFF_DT DT_CH_PRC BASE_CCY_F SIMILAR_FДепозитный договор 19.03.2008 01.01.1900 1 NКредитный договор 22.03.2006 01.01.1900 0 NКредитный договор 17.11.2019 01.01.1900 1 Y

2 таблица - это шаблоны, удовлетворяя которые в первой таблице должно быть проставлено дополнительное поле с флагом, который соответствует флагу 6го поля из 2й таблицы.
LOAN_CL EFF_DT DT_CH_PRC BASE_CCY_F SIMILAR_F RVSRКредитный договор >=2019-03-01 1 Y YКредитный договор >=2019-03-01 1 Y YКредитный договор <2019-03-01 <2019-03-01 1 Y NКредитный договор #Y NКредитный договор 0 N

на выходе должно получиться такое (измененнная первая таблица 1):
LOAN_CL EFF_DT DT_CH_PRC BASE_CCY_F SIMILAR_F RVSR_FДепозитный договор 19.03.2008 01.01.1900 1 NNКредитный договор 22.03.2006 01.01.1900 0 NNКредитный договор 17.11.2019 01.01.1900 1 YY
поскольку в 3 строке таблицы 1 все поля удовлетворяют условиям из таблицы 2, которым соответствует поле RVSR = Y.

программно сделать эту связку пока не очень получается.
написал скрипт, он выводит большее количество строк, чем нужно...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select
case
when 
CR_SA.LOAN_CL = RVSR.LOAN_CL 
and (left(RVSR.EFF_DT,2) = '>='
or left(RVSR.DT_CH_PRC,2) = '>=' )
and CR_SA.BASE_CCY_F = RVSR.BASE_CCY_F
and right(RVSR.SIMILAR_F,1) = 'Y'
then 'Y' else 'N' end RVSR_F
from TABLE_1 CR_SA
left join TABLE_2 RVSR
on  CR_SA.LOAN_CL = RVSR.LOAN_CL
and  (CR_SA.EFF_DT =  cast(replace(replace(replace(RVSR.EFF_DT, '>',''), '<',''),'=','') as date) 
or CR_SA.DT_CH_PRC =  cast(replace(replace(replace(RVSR.DT_CH_PRC, '>',''), '<',''),'=','') as date) )
and CR_SA.BASE_CCY_F = RVSR.BASE_CCY_F
and CR_SA.SIMILAR_F  = RVSR.SIMILAR_F
...
Рейтинг: 0 / 0
Выборка на основе таблицы с шаблонными данными.
    #39831464
A.Panskikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AVRomanenko,

для подобных случаев

Select t1.* , 1 from t1 where [not] exists (select 1 from t2 where ... )

и это более правильный для написания update.
...
Рейтинг: 0 / 0
Выборка на основе таблицы с шаблонными данными.
    #39831855
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

По-моему удобнее завести для неравенств в датах поля *_from и *_to с включением границ, а не парсить знаки неравенств из полей:

2 таблица - это шаблоны...
LOAN_CL EFF_DT_from EFF_DT_to DT_CH_PRC_fromDT_CH_PRC_to BASE_CCY_F SIMILAR_F RVSRКредитный договор 2019-03-01 1 Y YКредитный договор 2019-03-01 1 Y YКредитный договор 2019-02-28 2019-02-28 1 Y NКредитный договор #Y NКредитный договор 0 N

Запрос тогда:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select a.*, coalesce(b.RVSR, 'N') as RVSR_F
from TABLE_1 a
left join table
(
select *
from TABLE_2 b 
where a.LOAN_CL = b.LOAN_CL 
and a.EFF_DT between coalesce(b.EFF_DT_from, a.EFF_DT) and coalesce(b.EFF_DT_to, a.EFF_DT)
and a.DT_CH_PRC between coalesce(b.DT_CH_PRC_from, a.DT_CH_PRC) and coalesce(b.DT_CH_PRC_to, a.DT_CH_PRC)
and a.BASE_CCY_F = coalesce(b.BASE_CCY_F, a.BASE_CCY_F)
and a.SIMILAR_F = coalesce(b.SIMILAR_F, a.SIMILAR_F)
fetch first 1 row only
) b on 1 = 1
;



Здесь из шаблонов берется первая попавшаяся запись, удовлетворяющая всем условиям (NULL в поле шаблонов, как я понял, считается отсутствием условий), иначе могут быть дубли.
Если нужны дубли или известно, что их не может быть, то можно закомментировать строку с "fetch first" (или переписать на "left join TABLE_b ON ..." с теми же условиями).
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Выборка на основе таблицы с шаблонными данными.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]