【发布时间】:2021-08-27 22:41:34
【问题描述】:
我正在使用 SSMS 创建一份报告,显示销售代表没有跟进我们今年收到的潜在客户的客户帐户。这将在活动列表中的帐户(帐户中的操作)中显示,“Lead”是列出的最后一项(代表在收到潜在客户后没有采取任何操作)。
我的代码正在为今年至少获得一次潜在客户的所有客户提取最新的“潜在客户”活动:
| CustomerName | Activity | Date |
|---|---|---|
| Bob's Tires | Lead | 2021-01-05 |
| Ned's Nails | Lead | 2021-02-02 |
| Good Eats | Lead | 2021-02-03 |
我只需要它来吸引潜在客户是最后一次活动的客户:
| CustomerName | Activity | Date |
|---|---|---|
| Ned's Nails | Lead | 2021-02-02 |
这是我的代码和示例表。我错过了什么?我尝试了很多事情都没有运气。
WITH activities AS (
SELECT
a. *
, CASE WHEN a.ContactDate = MAX(CASE WHEN a.Activity LIKE 'Lead%'
THEN a.ContactDate END) OVER (PARTITION BY a.AcctID)
THEN 1 ELSE 0 END AS no_followup
FROM AcctActivities a
WHERE a.ContactDate >= '2021-01-01'
)
SELECT
c.Name,
act.Activity,
act.ContactDate
FROM Customers c
INNER JOIN activities act ON c.AcctID = act.AcctID AND act.no_followup = 1
ORDER BY c.AcctID, act.ContactDate ASC
表 1:客户 (c)
| AcctID | CustomerName |
|---|---|
| 11 | Bob's Tires |
| 12 | Ned's Nails |
| 13 | Good Eats |
| 14 | Embers |
表 2:活动 (a)
| 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 | Lead | 2021-02-02 |
| 5 | 13 | Lead | 2021-02-03 |
| 6 | 13 | Phone Call | 2021-01-15 |
| 7 | 13 | Sales Email | 2021-01-15 |
| 8 | 14 | Cold Call | 2021-01-20 |
【问题讨论】:
-
样本数据和期望的结果真的很有帮助。另外,我不清楚你的问题是什么。您的标题和问题描述似乎不是 100% 相同。
-
已更新。谢谢你的指导!
标签: sql sql-server ssms reporting