Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

关于一个合并相同数据的查询

孔凡旺  发表于:2019-07-20 23:52:03  
复制

原表是这样的

姓名 排课
张老师 周一
李老师 周二
孙老师 周三
张老师 周四
张老师 周五

查询后想要达到的效果是这样的:

张老师 周一,周四,周五
李老师 周二
孙老师 周三

 请高手给与支持,谢谢

 

Top
leoyoung 发表于:2019-07-21 16:44:17

1、下列代码没有测试过,仅提供思路参考。

Function MergeStr(str1 As String) As String

    
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim str As String
Set db = CurrentDb
Set rst = db.OpenRecordset("SELECT 姓名,排课 from 原表名称 where  姓名='" & str1 & "'")
rst.MoveFirst
Do While Not rst.EOF
str = str & rst(1) & ","
rst.MoveNext
Loop
MergeStr = Left(str, Len(str) - 1)

End Function


2、建立一个新的查询

SELECT 原表名称.姓名, MergeStr([原表名称]![姓名]) AS 想要达到的效果
FROM 原表名称
GROUP BY 原表名称.姓名, MergeStr([原表名称]![姓名]);




郑全权 发表于:2019-07-21 23:05:59
@leoyoung.谢谢!解决点击下载此附件

孔凡旺 发表于:2019-07-24 17:29:58
感谢两位!

总记录:3篇  页次:1/1 9 1 :