SSMS创建Lead跟进报表:如何筛选首条Lead之后的所有客户活动
解决方案
你需要先计算每个客户的首次Lead活动发生日期,再用这个日期筛选所有晚于等于该时间的活动即可,SSMS 支持用CTE(公共表表达式)实现这个逻辑,修改后的SQL如下:
-- 先计算每个客户的首次Lead日期 WITH FirstLead AS ( SELECT AcctID, MIN(Date) AS FirstLeadDate FROM Activities WHERE Activity = 'Lead' GROUP BY AcctID ) SELECT c.CustomerName, a.Activity, a.Date FROM Customer c INNER JOIN Activities a ON c.AcctID = a.AcctID -- 关联首次Lead日期表 INNER JOIN FirstLead fl ON c.AcctID = fl.AcctID WHERE a.Date >= '2021-01-01' -- 仅保留首次Lead及之后的活动 AND a.Date >= fl.FirstLeadDate ORDER BY c.CustomerName, a.Date
补充说明
- 原SQL中
ORDER BY用到的a.ContactDate属于笔误,已修正为表结构中存在的a.Date字段 - 若需要适配多年度统计需求,仅需要在
FirstLead的WHERE子句中补充对应年度的日期过滤条件即可
内容的提问来源于stack exchange,提问作者Laura Bullard
相关产品推荐
相关产品推荐

