尝试获取联系信息(EBS)时情况异常

时间:2019-03-18 20:42:19

标签: oracle plsql oracle11g oracle-ebs

我不知道如何获取存储在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

1 个答案:

答案 0 :(得分:0)

据我所知HZ_PARTIES = HZ_PARTY_SITES,这是一对多的关系。因此HZ_PARTY_SITES可以包含例如地址“开单至”,“托运至”等 首先,在EBS中检查客户拥有多少个站点。

我还建议您在页面http://etrm.oracle.com/pls/etrm/etrm_search.search上进行。您可以在此处检查EBS表之间的关系。

enter image description here

如您所见,hcp ON hcas.party_site_id = hcp.owner_table_id之间的关系 不存在。