ОБРАТИТЕ ВНИМАНИЕ, что этот поток предназначен для тех, кто знает EBS Oracle (разработчиков или программистов).
Я безуспешно пытался получить контактную информацию для конкретного клиента ( HEADER контактная информация .. эта информация хранится в 'HZ_PARTIES')
Вы знаете, у нас есть контактная информация заголовка или контактная информация сайта . Контактная информация сайта хранится в HZ_PARTY_SITES
Каждый раз, когда создается клиент, вызывается эта процедура (посмотрите на этот код, вы должны сосредоточиться на контактной информации электронной почты)
https://www.codepile.net/pile/9nzMKy4D
Основываясь на информации, показанной выше, я сделал этот запрос:
SELECT
hp.party_name
, hca.account_number
, hca.cust_account_id
, hcas.cust_acct_site_id
, hcp.phone_number
, hcp.email_address
, hcas.status as hcas_status
, DECODE( hcas.attribute5, 'PUP', 'Y', 'N' )
, hca.status as hca_status
FROM apps.hz_cust_accounts hca
INNER JOIN apps.hz_cust_acct_sites_all hcas ON hca.cust_account_id = hcas.cust_account_id
INNER JOIN apps.hz_party_sites hps ON hcas.party_site_id = hps.party_site_id
INNER JOIN apps.hz_locations hl ON hps.location_id = hl.location_id
INNER JOIN apps.hz_parties hp ON hps.party_id = hp.party_id
LEFT JOIN (
SELECT
owner_table_id
, phone_number
, email_address
FROM hz_contact_points
WHERE status = 'A'
AND primary_flag = 'Y'
AND owner_table_name = 'HZ_PARTIES'
AND contact_point_type IN ('EMAIL','PHONE')
)
WHERE hcas.status = 'A'
AND hps.status = 'A'
AND hca.status = 'A'
AND hca.account_number = 'the account number'
;
Проблема в том, что он не работает должным образом, он не показывает правильную информацию электронной почты (иногда он показывает ноль, а у клиента есть электронная почта).
Не могли бы вы помочь мне решить эту проблему? Мне это действительно нужно, но я застрял.
Спасибо
РЕДАКТИРОВАТЬ: я просто немного изменил свой запрос, но он еще не работает должным образом:
SELECT
hp.party_name
, hca.account_number
, hcas.cust_acct_site_id
, hcp.phone_number
, hcp.email_address
, hcas.status as hcas_status
, DECODE( hcas.attribute5, 'PUP', 'Y', 'N' )
FROM apps.hz_cust_accounts hca
INNER JOIN apps.hz_cust_acct_sites_all hcas ON hca.cust_account_id = hcas.cust_account_id
INNER JOIN apps.hz_party_sites hps ON hcas.party_site_id = hps.party_site_id
INNER JOIN apps.hz_locations hl ON hps.location_id = hl.location_id
INNER JOIN apps.hz_parties hp ON hps.party_id = hp.party_id
LEFT JOIN (
SELECT
owner_table_id
, phone_number
, email_address
FROM hz_contact_points
WHERE status = 'A'
AND primary_flag = 'Y'
AND owner_table_name = 'HZ_PARTIES'
AND contact_point_type IN ('EMAIL','PHONE')
GROUP BY
owner_table_id
) hcp ON hcas.party_site_id = hcp.owner_table_id
WHERE hcas.status = 'A'
AND hps.status = 'A'
AND hca.status = 'A'
--AND hca.account_number = 'account_number'
;
РЕДАКТИРОВАТЬ # 2
Другая версия моего запроса (не работает должным образом - NULL электронные письма)
SELECT
hp.party_name
, hca.account_number
, hca.cust_account_id
, hcp.phone_number
, hcp.email_address
, hcas.status
, DECODE( hcas.attribute5, 'PUP', 'Y', 'N' )
FROM apps.hz_cust_accounts hca
INNER JOIN apps.hz_cust_acct_sites_all hcas ON hca.cust_account_id = hcas.cust_account_id
INNER JOIN apps.hz_party_site hps ON hcas.party_site_id = hps.party_site_id
INNER JOIN apps.hz_locations hl ON hps.location_id = hl.location_id
INNER JOIN apps.hz_parties hp ON hps.party_id = hp.party_id
LEFT JOIN (
SELECT
owner_table_id
, max(case when contact_point_type = 'PHONE' then phone_number end) phone_number
, max(case when contact_point_type = 'EMAIL' then email_address end) email_address
FROM hz_contact_points
WHERE status = 'A'
AND primary_flag = 'Y'
AND owner_table_name = 'HZ_PARTIES'
AND contact_point_type IN ('EMAIL','PHONE')
GROUP BY
owner_table_id
) hcp ON hcas.party_site_id = hcp.owner_table_id
WHERE hcas.status = 'A'
AND hps.status = 'A'
AND hca.status = 'A'
--AND hca.account_number = 'account_number'
;