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

MS Access 365中关联客户最新计划的SQL查询需求

解决方案:MS Access 365 实现客户与最新计划合并查询

要实现列出所有客户并关联其最新计划的需求,可以通过嵌套子查询结合左连接的方式完成,以下是具体的SQL实现:

基础版SQL(适用于单客户单日仅一条计划的场景)

CREATE VIEW QClientsExtended AS
SELECT 
    c.ClientID,
    c.ClientFullName,
    p.PlanDetails,
    p.PlanDate,
    c.ExternalAppts
FROM 
    TClients c
LEFT JOIN (
    -- 筛选每个客户的最新计划记录
    SELECT 
        tp.ClientID,
        tp.PlanDetails,
        tp.PlanDate
    FROM 
        TPlans tp
    INNER JOIN (
        -- 计算每个客户的最新计划日期
        SELECT 
            ClientID,
            MAX(PlanDate) AS LatestPlanDate
        FROM 
            TPlans
        GROUP BY 
            ClientID
    ) lp ON tp.ClientID = lp.ClientID AND tp.PlanDate = lp.LatestPlanDate
) p ON c.ClientID = p.ClientID;

进阶版SQL(处理单客户单日多条计划的场景)

如果存在同一客户在同一天有多个计划的情况,上述查询会返回多条该客户的记录。若需确保每个客户仅返回一条结果,可以通过取最新日期中最大的PlanID来实现:

CREATE VIEW QClientsExtended AS
SELECT 
    c.ClientID,
    c.ClientFullName,
    p.PlanDetails,
    p.PlanDate,
    c.ExternalAppts
FROM 
    TClients c
LEFT JOIN (
    SELECT 
        tp.ClientID,
        tp.PlanDetails,
        tp.PlanDate
    FROM 
        TPlans tp
    INNER JOIN (
        -- 找到每个客户最新日期的最大PlanID
        SELECT 
            ClientID,
            MAX(PlanID) AS LatestPlanID
        FROM 
            TPlans
        WHERE 
            PlanDate = (SELECT MAX(PlanDate) FROM TPlans WHERE ClientID = TPlans.ClientID)
        GROUP BY 
            ClientID
    ) lp ON tp.PlanID = lp.LatestPlanID
) p ON c.ClientID = p.ClientID;

逻辑说明

  1. 内层子查询先定位每个客户的最新计划日期(或对应日期的最大PlanID)
  2. 中间子查询通过关联筛选出对应最新计划的详情记录
  3. 外层使用左连接关联TClients表,确保所有客户都被列出,无计划的客户对应字段将显示为空

内容的提问来源于stack exchange,提问作者James Clarke

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:01:04