检索添加到帐户中的最新人记录



我正在尝试构建与我们Salesforce org中每个帐户分配给每个帐户的最新创建的记录的联系人表(主键)。

在Salesforce营销云中工作,我正在尝试构建一个可以自动更新的示例列表,以便我要测试的记录永远不会过时。我只需要每个帐户中的一个示例即可进行测试。由于我想确保记录不是陈旧的,因此我想选择分配给每个帐户的最新记录。

每个联系人都分配给一个且只有一个帐户。帐户ID作为联系记录上的外键。联系人的创建日期也是联系记录上的字段。

示例列表需要包含居住在帐户记录上的电子邮件地址,ContactID和管理公司的名称。

我认为对帐户表进行方向性加入将可以解决问题,但这无效。我认为那是因为没有什么区别要选择的记录。

这是我为代码所拥有的,这是无用的...

SELECT
    C.Email AS Email,
    C.Id AS Id18,
    C.AccountID AS AccountID,
    A.Management_Company AS ManagementCompany
FROM
    ENT.Contact_Salesforce_DE AS C 
    RIGHT JOIN ENT.Account_Salesforce_DE AS A ON C.AccountID = A.Id
WHERE
    A.RecordTypeId = '1234567890ABCDEFGH' AND
    A.Management_Company IS NOT NULL AND
    C.Email IS NOT NULL

语法会签出,但是每次运行时我都会收到系统错误。

营销云在旧版本的SQL Server上运行,因此一些最新的查询功能将不总是可用。

是的,我是SQL的相对菜鸟。如果这有一个非常简单的解决方案,我不会感到惊讶,但是我找不到另一个描述解决方案的条目,所以...

如果我正确跟随您,则要拉出与每个帐户相关的最新联系人。

在数据库服务器上不支持窗口功能(似乎是您的RDBMS的情况),一个典型的解决方案是在JOIN中添加特殊条件。此NOT EXISTS条件使用子查询来确保在子表中挑选的记录是最新的(换句话说:没有最高创建日期的子记录,而不是被加入的记录):

SELECT
    c.Email AS Email,
    c.Id AS Id18,
    c.AccountID AS AccountID
FROM
    ENT.Account_Salesforce_DE AS a 
    INNER JOIN ENT.Contact_Salesforce_DE AS c 
        ON c.AccountID = a.Id
        AND c.email IS NOT NULL
        AND NOT EXISTS (
            SELECT 1
            FROM ENT.Contact_Salesforce_DE AS c1
            WHERE 
                c1.email IS NOT NULL 
                AND c1.AccountID = a.Id 
                AND c1.CreatedDate > c.CreatedDate
        )
WHERE
    A.RecordTypeId = '1234567890ABCDEFGH' 
    AND A.Management_Company IS NOT NULL

最新更新