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

如何在Microsoft Access中按StudentID和Subject合并重复行

在Access中按StudentID和Subject合并重复行并聚合Code字段

方法:自定义VBA函数+查询实现

Access本身没有内置的字符串聚合函数,我们可以通过自定义VBA函数来实现Code字段的合并,步骤如下:

  1. 创建VBA聚合函数
    按Alt+F11打开VBA编辑器,右键点击数据库对象→插入→模块,粘贴以下代码:
Function ConcatenateCodes(strStudentID As String, strSubject As String) As String
    Dim rs As DAO.Recordset
    Dim strCodes As String
    Dim strSQL As String
    
    ' 构造SQL查询,筛选当前StudentID和Subject的唯一Code
    strSQL = "SELECT DISTINCT Code FROM 你的表名 WHERE StudentID = '" & strStudentID & "' AND Subject = '" & strSubject & "'"
    
    Set rs = CurrentDb.OpenRecordset(strSQL)
    
    ' 遍历记录集,拼接Code为[Code];[Code]格式
    Do While Not rs.EOF
        If strCodes <> "" Then
            strCodes = strCodes & ";[" & rs!Code & "]"
        Else
            strCodes = "[" & rs!Code & "]"
        End If
        rs.MoveNext
    Loop
    
    ConcatenateCodes = strCodes
    rs.Close
    Set rs = Nothing
End Function

注意:把代码里的你的表名替换成你实际的表名称;如果StudentID是数字类型,去掉代码里的单引号。

  1. 创建合并查询
    创建一个新的查询,切换到SQL视图,粘贴以下SQL语句:
SELECT StudentID, Subject, ConcatenateCodes(StudentID, Subject) AS 合并后的Code
FROM 你的表名
GROUP BY StudentID, Subject;

运行这个查询,就能得到按StudentID和Subject去重,且Code字段合并为指定格式的结果。

示例效果

对于原表中两行StudentID为393438、Subject为Math的记录,查询结果会显示为一行,合并后的Code字段值为[AF15];[DS1.4]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:03:10