设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 5464|回复: 9
打印 上一主题 下一主题

[查询] 如何在查询中实现多行结果的合并显示

[复制链接]
跳转到指定楼层
1#
发表于 2014-12-18 15:26:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
例如针对表1进行查询,    班级     姓名      成绩             需要查询得到表结构为           班级       成绩平均值       姓名列表
                                    1         王二      87                                                          1              88              王二、李三
                                    1         李三      90                                                          2              67              张一、王山
                                    2         张一      75
                                    2         王山      60        
请教高手们,如何实现?      
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖 订阅订阅
2#
发表于 2014-12-18 17:37:21 | 只看该作者
请搜索“来回折腾”,TodayNew的实例。
3#
 楼主| 发表于 2014-12-19 10:50:57 | 只看该作者
谢谢了,学习了,我想问一下有没有用查询方法实现这个功能,不用窗体的
4#
发表于 2014-12-19 10:58:29 | 只看该作者
tanghuaiyi 发表于 2014-12-19 10:50
谢谢了,学习了,我想问一下有没有用查询方法实现这个功能,不用窗体的

就算查询,也只是把按钮中的点击事件改为函数过程而已,跟直接使用窗体没什么区别。
5#
发表于 2014-12-20 15:01:20 | 只看该作者
本帖最后由 风中漫步 于 2014-12-20 15:04 编辑

可能不行.你试试自定义函数吧
6#
发表于 2014-12-24 12:41:24 | 只看该作者
只能写个字符串累加函数来解决
Leijia:
        Dim strRsFilter As String
        Dim strLeijia As String
        With frm.RecordsetClone
                If .RecordCount < 1 Then GoTo exitFunction
                .MoveFirst
                Do Until .EOF
                        strLeijia = ""
                        strRsFilter = ""
                        For lngfield = 1 To UBound(arrField)
                                If arrField(lngfield, 3) = "chr" Then arrField(lngfield, 3) = "'"
                                strRsFilter = strRsFilter & arrField(lngfield, 5) & arrField(lngfield, 1) & arrField(lngfield, 2) & arrField(lngfield, 3) & .Fields(arrField(lngfield, 4)) & arrField(lngfield, 3)
                        Next
                        rs.Filter = strRsFilter
                        If rs.RecordCount >= 1 Then
                        Do Until rs.EOF
                                strLeijia = strLeijia & rs.Fields(arrField(0, 4)) & IIf(arrField(0, 5) = "vbcrlf", vbCrLf, arrField(0, 5))
                                rs.MoveNext
                        Loop
                        .Edit
                        .Fields(arrField(0, 1)) = strLeijia
                        .Update
                        End If
                        .MoveNext
                Loop
                frm.Form.Requery
        End With
        rs.Close
7#
发表于 2014-12-24 13:04:45 | 只看该作者
还有一种变通方法用一个transform变形查询,然后再正常查询
8#
发表于 2014-12-24 13:08:29 | 只看该作者
SchoolClass        StudentName        Fenshu
1        a1        1
2        a2        1
3        a3        1
4        a4        1
1        b1        2
2        b2        2
3        b3        2
4        b4        2
1        c1        3
2        c2        3
3        c3        3
1        d1        4
2        d2        4
3        f1        5
4        f2        6
然后做一个变形查询
TRANSFORM First(StudentName & ',') AS Expr1
SELECT fenshu.SchoolClass
FROM fenshu
GROUP BY fenshu.SchoolClass
PIVOT 'F' & Fenshu;
然后再从变形查询里把字段合并
select Schoolclass,f1&f2&f3&f4&f5&f6 from 变形查询
结果如下
Schoolclass        Expr1001
1        a1,b1,c1,d1,
2        a2,b2,c2,d2,
3        a3,b3,c3,f1,
4        a4,b4,f2,
9#
发表于 2015-1-1 17:02:34 | 只看该作者
谢谢,学习了。
10#
发表于 2015-10-1 15:26:26 | 只看该作者
看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-12-1 20:34 , Processed in 0.102871 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表