You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSMS编写SQL查询本年线索为最新活动的客户账户问题求助

逻辑缺陷说明

你当前的代码只实现了「筛选每个客户今年最新的Lead记录」的逻辑,缺少了关键的校验步骤:没有验证这条最新Lead的日期,是否等于该客户今年所有活动的最晚日期,只有两者相等时,才代表Lead是最后一次活动,没有后续跟进。

拿你的样例数据举例:

  • Bob's Tires的最新Lead是2021-01-05,但该客户2021-01-06还有一次电话活动,属于有后续跟进,应该排除
  • Good Eats的最新Lead是2021-02-03,晚于该客户其他所有活动日期,按规则应该出现在结果中,你给出的预期结果可能存在疏漏
修正后代码
WITH activities AS (
    SELECT 
        a.*,
        -- 计算当前账户今年最大的Lead日期
        MAX(CASE WHEN a.Activity LIKE 'Lead%' THEN a.ContactDate END) OVER (PARTITION BY a.AcctID) AS max_lead_date,
        -- 计算当前账户今年所有活动的最大日期
        MAX(a.ContactDate) OVER (PARTITION BY a.AcctID) AS max_total_date
    FROM AcctActivities a
    WHERE a.ContactDate >= '2021-01-01'
)
SELECT DISTINCT
    c.Name AS CustomerName,
    act.Activity,
    act.ContactDate AS Date
FROM Customers c
INNER JOIN activities act 
    ON c.AcctID = act.AcctID 
    AND act.Activity LIKE 'Lead%'
    -- 确保当前行是该账户最新的Lead
    AND act.ContactDate = act.max_lead_date
    -- 确保最新Lead的日期就是账户所有活动的最晚日期,即没有后续跟进
    AND act.max_lead_date = act.max_total_date
ORDER BY c.AcctID, act.ContactDate ASC

内容的提问来源于stack exchange,提问作者Laura Bullard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:09:03