需要拉动客户和他们的各种销售活动——只有在特定的 activity 类型发生过的情况下

Need to pull customers & their various sales activities-- only if a specific activity type has ever occurred

我正在使用 SSMS 创建一个 'Lead Follow-Up' 报告来监控销售代表对销售线索的跟进情况。

目标:吸引所有带线索的客户 activity 今年和所有活动都在线索之后。 (如果有多个潜在客户,则为第一个之后的所有活动。)

我能够吸引所有具有潜在客户的客户,但我的代码正在吸引所有活动(在潜在客户之前和之后)。我需要它来在 'Lead' activity 之后拉动活动。如果一个客户有多个 'Lead',那么第一个 'Lead'.

之后的所有活动

以下是示例表和我尝试过的内容:

Table 1: 客户 (c)

AcctID CustomerName
11 Bob's Tires
12 Ned's Nails
13 Good Eats
14 Embers

Table2:活动(一)

AcctivityID AcctID Activity Date
1 11 Contact Added 2021-01-01
2 11 Lead 2021-01-05
3 11 Phone Call 2021-01-06
4 12 Marketing Email 2021-02-01
5 12 Lead 2021-02-02
6 13 Lead 2021-02-03
7 13 Phone Call 2021-02-15
8 13 Sales Email 2021-02-15
9 14 Cold Call 2021-01-20
SELECT
c.CustomerName
, a.Activity
, a.Date
FROM Customer c
INNER JOIN Activities a ON c.AcctID = a.AcctID
WHERE
a.Date >= '2021-01-01'
AND c.AcctID IN (SELECT AcctID FROM Activities WHERE Activity LIKE 'Lead')
ORDER BY c.CustomerName, a.ContactDate
CustomerName Activity Date
Bob's Tires Lead 2021-01-05
Bob's Tires Phone Call 2021-01-06
Ned's Nails Lead 2021-02-02
Good Eats Lead 2021-02-03
Good Eats Phone Call 2021-02-15
Good Eats Sales Email 2021-02-15

以下方法使用 MIN 作为 window 函数和 case 表达式,根据 Lead 活动进行过滤,以确定当年最早的潜在客户 activity帐户(由 AcctId 分区)。 is_valid_lead_item 然后使用 case 表达式创建,该表达式检查当前 activity 日期是否晚于最早的提前日期。 CTE lead_activities 还根据您最早考虑的 WHERE 子句中的数据进行过滤。最后,这将与您的客户 table 相结合,以包含客户详细信息,同时还进行过滤以仅包含当年第一个潜在客户 activity 之后的活动。

WITH lead_activities AS (
    SELECT 
        la.*,
        CASE
            WHEN la.Date >= MIN(CASE WHEN la.Activity='Lead' THEN la.Date END) OVER (PARTITION BY la.AcctId) THEN 1
            ELSE 0
        END as is_valid_lead_item
    FROM 
        Activities la
    WHERE 
        la.Date > '2021-01-01'
)
SELECT
    c.CustomerName,
    a.Activity,
    a.Date
FROM
    Customer c
INNER JOIN
    lead_activities a ON c.AcctID = a.AcctID AND
                         a.is_valid_lead_item=1
ORDER BY c.CustomerName, a.Date

View demo on db-fiddle

让我知道这是否适合你。