Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
d7d1cd Участник со стажем
Вступление в Клуб: 21.01.2022
|
Пн Фев 28, 2022 14:21  Выборка |
|
Полезность: Нет оценки
|
Всем привет. В таблице z#main_docum есть реквизит плательщика. Причем он может быть клиентом банка или не клиентом банка. Как написать код PL/Plus, который для каждого платежного документа покажет ИНН плательщика?
Для меня проблема в том, что ИНН хранится в другом ТБП, "путь" к которому из MAIN_DOCUM проложен через несколько полей с id. В голове рисуется чрезвычайно сложный sql запрос, хотя мне кажется, что в ЦФТ это должно реализовываться проще. |
|
|
Эмиралька Эксперт
Вступление в Клуб: 09.11.2015
|
Вт Мар 01, 2022 09:00  Re: Выборка |
|
Полезность: 1
|
d7d1cd пишет: | В таблице z#main_docum есть реквизит плательщика. Причем он может быть клиентом банка или не клиентом банка. Как написать код PL/Plus, который для каждого платежного документа покажет ИНН плательщика? |
Не скажу, что это сверхпросто, но примерно так:
sql: Код: | select
case when d.c_kl_dt#0 = 1 then -- клиент банка
( select x.c_inn from z#client x where x.id = d.c_kl_dt#1#1)
when d.c_kl_dt#0 = 2 then -- НЕ клиент банка, ИНН хранится в документе
d.c_kl_dt#2#inn
else 'хз'
end
from z#main_docum d |
pl+: Код: | select d(
case when d.[kl_dt].[0] = 1 then -- клиент банка
( select x(x.[inn]) in ::[client] where x = d.[kl_dt].[1].[1])
when d.[kl_dt].[0] = 2 then -- НЕ клиент банка, ИНН хранится в документе
d.[kl_dt].[2].[inn]
else 'хз'
end
) in ::[main_docum] |
|
|
|
d7d1cd Участник со стажем
Вступление в Клуб: 21.01.2022
|
Вт Мар 01, 2022 09:22   |
|
Полезность: 1
|
Спасибо. Уже сам дошел до такого:
Код: | type main is
select d(
decode(d.[KL_DT].[0], 1, d.[KL_DT].[1].[1].[INN], d.[KL_DT].[2][INN]) : INN_PLAT
)
in ::[MAIN_DOCUM]; |
|
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|