在建筑项目的 CRM 中,客户、建筑师和其他承包商都作为帐户存在。表 PROJ_AC_LINK 将 ACCOUNT 链接到 PROJECT,字段 PROJ_AC_LINK.ROLE_TYPE_ID 指定该链接代表什么(例如,Joe Simms 链接到角色“建筑师”下的项目 101)。
CRM 数据库和用户界面允许用户将多个帐户链接到同一角色下的项目。在某些情况下这很好(项目有 2 位建筑师),但在某些情况下则不是(我们应该为该项目开具发票的只有一个“客户”)。我无法更改 CRM。
来自单独系统的查询寻求获得 SITE_ADDRESS 和 CLIENT_ADDRESS,并假设每个项目只有一个客户端链接。它像这样查询它(205是角色'client'的代码):
SELECT
PROJECT.ADDRESS AS SITE_ADDRESS,
ACCOUNT.ADDRESS AS CLIENT_ADDRESS
FROM PROJECT
LEFT JOIN PROJ_AC_LINK ON
(PROJ_AC_LINK.PROJECT_ID = PROJECT.PROJECT_ID
AND
PROJ_AC_LINK.ROLE_TYPE_ID = '205')
LEFT JOIN ACCOUNT ON PROJ_AC_LINK.ACCT_ID = ACCOUNT.ACCT_ID
如果没有客户端链接到项目,此查询仍会返回 SITE_ADDRESS,但会为 CLIENT_ADDRESS 返回 NULL,这正是我想要的。
使用该系统的人知道如果他们得到一个空白的客户地址,就告诉 CRM 人员。但是,我需要考虑到有多个客户链接到一个项目的可能性。
在 PROJ_AC_LINK 中针对该角色的项目有多个记录的情况下,有没有一种方法可以让 CLIENT_ADDRESS 返回 NULL(或自定义文本)。
有任何想法吗?