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

Access按姓名日期group by分组后如何拼接同组任务到同一单元格

Access分组拼接同组多行文本实现方法

Access原生没有直接支持多行字符串拼接的聚合函数,直接用&运算符配合GROUP BY无法实现跨同行拼接,以下是两种可落地的方案:

方案一:全版本通用VBA方案(兼容性最好,推荐)

  1. 打开数据库后按Alt+F11唤起VBA编辑器,在左侧工程面板右键点击当前数据库,选择【插入】-【模块】
  2. 在模块代码编辑区粘贴如下自定义函数代码,注意替换代码注释中标注的表名、字段名为你实际库中的命名:
Function GroupConcat(sEmpName As String, dWorkDate As Date) As String
    Dim rs As DAO.Recordset
    Dim querySql As String
    Dim resultStr As String
    ' 请将下方SQL中的「任务表」「员工姓名」「日期」「任务内容」替换为你实际的表名、字段名
    querySql = "SELECT 任务内容 FROM 任务表 WHERE 员工姓名='" & Replace(sEmpName, "'", "''") & "' AND 日期=#" & Format(dWorkDate, "yyyy-mm-dd") & "#"
    Set rs = CurrentDb.OpenRecordset(querySql)
    resultStr = ""
    Do While Not rs.EOF
        If resultStr <> "" Then resultStr = resultStr & ";" ' 分隔符可按需修改,换行可用Chr(13)&Chr(10)
        resultStr = resultStr & Nz(rs!任务内容, "")
        rs.MoveNext
    Loop
    rs.Close
    Set rs = Nothing
    GroupConcat = resultStr
End Function
  1. 保存模块后回到Access查询界面,新建查询切换到SQL视图,运行如下语句即可得到结果:
SELECT 员工姓名, 日期, GroupConcat(员工姓名, 日期) AS 当日合并任务
FROM 任务表
GROUP BY 员工姓名, 日期;

方案二:高版本Access无代码方案(仅Access 365/2021及以上版本支持)

如果你的Access版本较新,内置了TEXTJOIN聚合函数,可以直接写查询实现,无需写VBA:

SELECT 员工姓名, 日期, TEXTJOIN(";", TRUE, 任务内容) AS 当日合并任务
FROM 任务表
GROUP BY 员工姓名, 日期;

注意:低版本Access没有TEXTJOIN函数,运行该语句会报函数不存在错误,优先使用VBA方案。

示例数据效果参考:
示例数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 11:12:31