У меня есть два запроса, один из которых выбирает идентификаторы:
SELECT CLIENT_REFERENCE FROM ISET.INVESTOR
У меня проблема в том, что мне нужно выполнить запрос ниже для каждого идентификатора.Я поместил текст «ЭТО НЕОБХОДИМО ЗАМЕНИТЬ С ИДЕНТИФИКАТОРОМ», где необходимо разместить идентификатор (CLIENT_REFERENCE).
Я не могу использовать оператор IN, потому что мне также нужно, чтобы CLIENT_REFERENCE появлялся для каждой записиполучено из запроса.
Конечным результатом должно быть то, что находится в полях оператора SELECT, а также запрашиваемый идентификатор клиента / ID.
Я использую dbeaver для запуска операторовпротив БД оракула.
Запрос - я поместил текст «ЭТО НУЖНО ЗАМЕНИТЬ С ИДЕНТИФИКАТОРОМ», где необходимо разместить ИД (CLIENT_REFERENCE).
SELECT /*+ RULE */
a.holder,
sum(((amount)*-1)/nvl(s.minor_per_unit,1)) bal,
e.security_id,
s.local_code,
s.curr_sym,
s.name,
nvl(s.minor_per_unit,1) mpu,
nvl(s.decimal_places,0) dp,
nvl(s.pricing_units,1) pricing_units,
s.exchange_rate,
s.val_security,
SUM(CASE WHEN S.VAL_SECURITY NOT IN ('GBP') AND E.SECURITY_ID NOT IN ('GBP') Then ((((amount)*-1)/nvl(s.minor_per_unit,1))*s.exchange_rate)*(SELECT EXCHANGE_RATE FROM ISET.SECURITY WHERE SECURITY_ID=S.VAL_SECURITY) WHEN S.VAL_SECURITY IN ('GBP') AND E.SECURITY_ID NOT IN ('GBP') Then ((((amount)*-1)/nvl(s.minor_per_unit,1))*s.exchange_rate) Else ((amount)*-1)/nvl(s.minor_per_unit,1) End )GBP_VALUE,
(CASE WHEN e.security_id IN ('GB00BCFKG114','GB00BJ591Z61','GB00BLRZNY93','GB00BQ70PN21','GB00BYZZYP05','GB00BD5NDM75','GB00BD5NDF09','GB00BYQLMM09','GB00BDRKWQ32','GB00BD3H4G23','GB00BYQJ1839','GB00BFX17144','GB00BV9G0J47','GB00BYQJ1946','GB00BD5M5K62','GB00BGPP6817','XS0159013068') THEN 'BONDS' ELSE s.class_narrative END) AS ASSETCLASS
FROM trans t, security s, account a, entry e
WHERE a.account_id in
(select account_id from account
where account_id in
(select account_id from account
connect by prior account_id = parent
start with account_id in
(select account_id from account x
where type = 'INVESTOR'
and holder ="THIS NEEDS TO BE REPLACED WITH THE ID"
and (
('PHY_CUS') in
(select account_id from account
connect by prior parent = account_id
start with account_id = x.account_id)
OR
('CRE_AV') in
(select account_id from account
connect by prior parent = account_id
start with account_id = x.account_id)
or ('CRE_INV') in
(select account_id from account
connect by prior parent = account_id
start with account_id = x.account_id)
or ('CDP') in
(select account_id from account
connect by prior parent = account_id
start with account_id = x.account_id)
)
)))
and e.account_id = ''||a.account_id
and ( ''||a.type in ( 'CRE_DEL','CRE_RES','CRE_STW','CRE_OAT','CRE_MTM',
'CRE_USE','INVESTOR','CRE_ESCROW' )
or ( ''||a.type = 'CRE_CLA' and nvl(s.class_narrative,'SHARES') != 'CURRENCY' ) )
and ( ''||a.type != 'CRE_DEL'
or ( ''||a.type = 'CRE_DEL'
and exists(
select 1 from entry ee, account aa
where aa.account_id = ee.account_id
and aa.type = a.type
and aa.holder = a.holder
and ''||ee.security_id != e.security_id ) ) )
and s.security_id = ''||e.security_id
and t.trans_id = ''||e.trans_id
and nvl( e.val_date, decode('STAT',
'STAT',t.statement_date, 'PHYS',t.physical_date-1 ) )
<= '05-AUG-19'
group by
a.holder, e.security_id,
s.local_code,
s.curr_sym,
s.name,
nvl(s.minor_per_unit,1),
nvl(s.decimal_places,0),
nvl(s.pricing_units,1),
s.exchange_rate,
s.val_security,
S.class_narrative
having sum(amount) !=0;
СпасибоВы за чтение, любая помощь будет принята с благодарностью.