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

Access/Node-RED单查询需求:按日期取MAC地址最新记录并统计条数

Access SQL 单查询实现需求方案

正确查询语句

假设你的表名为DeviceRecords(请替换为实际表名),以下是满足需求的单条SQL查询:

SELECT 
    main.MACAddress, 
    main.tDate,
    total.TotalRecords
FROM 
    -- 获取指定日期内每个MAC的最新时间
    (SELECT MACAddress, MAX(tDate) AS LatestTime
     FROM DeviceRecords
     WHERE tDate >= #2023/07/31# AND tDate < #2023/08/01#
     GROUP BY MACAddress) AS latest_times
INNER JOIN DeviceRecords AS main
    ON latest_times.MACAddress = main.MACAddress 
    AND latest_times.LatestTime = main.tDate
-- 关联总条数统计结果,每条记录附加总数
CROSS JOIN (
    SELECT COUNT(*) AS TotalRecords
    FROM (
        SELECT MACAddress
        FROM DeviceRecords
        WHERE tDate >= #2023/07/31# AND tDate < #2023/08/01#
        GROUP BY MACAddress
    ) AS unique_macs
) AS total

关键逻辑说明

  1. 日期筛选:用tDate >= #2023/07/31# AND tDate < #2023/08/01#替代直接等于,避免tDate包含时间部分时漏判或误判(比如2023/07/31 14:30的记录不会被=过滤掉)。Access中日期必须用#包裹。
  2. 获取每个MAC的最新记录:通过子查询latest_times分组统计每个MAC在指定日期内的最大tDate,再和原表关联,拿到对应MAC的最新完整记录。
  3. 统计总条数:内层unique_macs子查询先统计符合条件的唯一MAC数量(即最终返回的记录条数),再通过CROSS JOIN将总条数附加到每条明细记录中。

简化场景调整

如果你的tDate字段仅包含日期(无时间部分),可以将日期条件简化为tDate = #2023/07/31#。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 02:20:06