Я не знаю, как получить всю контактную информацию, которая хранится в HZ_PARTIES.
У нас есть HZ_PARTIES И HZ_PARTY_SITES, у обоих есть контактная информация, верно?
Я хочу получить информацию от HZ_PARTIES.
Проблема в том, что мой запрос не работает должным образом, он не получает информацию, которую я хочу. Если я использую этот запрос:
SELECT
hp.party_name
, hca.account_number
, hcp.phone_number
, hcp.email_address
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'
;
ЗАМЕТЬТЕ, что я использую это условие:
hcp ON hcas.party_site_id = hcp.owner_table_id
Но этот запрос НЕ работает должным образом, потому что если я хочу найти всю контактную информацию для определенного номера счета, он должен вернуть электронное письмо, но вместо этого он возвращает NULL
Дело в том, что если я поставлю это другое условие в обмен на предыдущее:
hcp ON hcas.party_site_id = hps.party_site_id
Он возвращает несколько результатов для одного account_number, все не так, НО он показывает сообщение, которое я ищу.
Что здесь происходит?
Не могли бы вы помочь мне решить эту проблему?
PS: Каждый раз, когда создается клиент, выполняется эта ПРОЦЕДУРА:
https://www.codepile.net/pile/9nzMKy4D