设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123下一页
返回列表 发新帖
查看: 9095|回复: 20
打印 上一主题 下一主题

[查询] 请教查询“汇总”group by的设置

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2015-11-8 10:44:31 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
各位前辈,遇到一个菜鸟问题,不知如何解决,麻烦指点。

成绩表:
有3个字段:考试日期,科目,成绩。
记录假设为:
1月1日,语文,11
1月1日,数学,12
2月1日,语文,21
2月1日,数学,22
3月1日,语文,31
3月1日,数学,32

我想在查询中查出各科目最后一次考试的成绩,结果希望如下:
3月1日,语文,31
3月1日,数学,32

不知在查询中该如何设置,貌似是用到查询中的汇总功能,再加上group by等选项,不过怎么也设置不正确。
请教各位了!谢谢。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
21#
发表于 2017-7-29 13:01:35 | 只看该作者
学习了 感谢分享

点击这里给我发消息

20#
 楼主| 发表于 2015-11-9 16:34:02 | 只看该作者
todaynew 发表于 2015-11-9 16:21
看你的学习积极性很高,再教你一点。你的这个问题是属于现在完成时问题,关于这个问题可学习:http://www ...

我就是要这个啊。。。。。。。。。。。。。。
19#
发表于 2015-11-9 16:21:49 | 只看该作者
langtaoim 发表于 2015-11-9 15:31
先收着,研究~~~~~~~~~~谢谢拉。

看你的学习积极性很高,再教你一点。你的这个问题是属于现在完成时问题,关于这个问题可学习:http://www.office-cn.net/forum.p ... =%CD%EA%B3%C9%CA%B1
对于现在完成时问题的具体解法,可以有多种SQL语句。在本帖17楼给你的回复只是其中的一种运行效率较高的解法。

点击这里给我发消息

18#
 楼主| 发表于 2015-11-9 15:31:40 | 只看该作者
todaynew 发表于 2015-11-9 15:28
select b.*
from 表1 as b
inner jion

先收着,研究~~~~~~~~~~谢谢拉。
17#
发表于 2015-11-9 15:28:15 | 只看该作者
langtaoim 发表于 2015-11-9 10:04
麻烦好人做到底~~~~给填写一下吧。

select b.*
from 表1 as b
inner jion
(select max(a.考试日期) as 考试日期,a.科目
from 表1 as a) as c on b.考试日期=c.考试日期 and b.科目=c.科目;

点击这里给我发消息

16#
 楼主| 发表于 2015-11-9 10:04:13 | 只看该作者
roych 发表于 2015-11-9 09:05
因为“语文”对应的最后一个“成绩”是10。
如果要一一对应,就不能使用Last,应该用Dlookup:
Dlookup(" ...

{:soso_e104:}麻烦好人做到底~~~~给填写一下吧。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
15#
发表于 2015-11-9 09:05:20 | 只看该作者
因为“语文”对应的最后一个“成绩”是10。
如果要一一对应,就不能使用Last,应该用Dlookup:
Dlookup("成绩","表1","科目='"&[]&"' and 考试日期=#'&[考试日期]&"#"),注意:
---如果同一个日期,同一个科目有两个不同的成绩时,只返回第一条记录;
---如果同一个日期,同一个科目如果没有成绩时,会返回空值。

点击这里给我发消息

14#
 楼主| 发表于 2015-11-8 21:14:40 | 只看该作者
todaynew 发表于 2015-11-8 16:27
没什么好学的,呵呵。
通过查询视图和SQL视图的切换,一看就明白了。

麻烦了,希望继续请教一下:
表1:

查询设计视图:


查询SQL:
SELECT Max(表1.考试日期) AS 考试日期之最大值, 表1.科目, Last(表1.成绩) AS 成绩之Last
FROM 表1
GROUP BY 表1.科目;


运行结果:


问题:
我的意图是对科目进行分组(语文、数学),取最后的考试日期(1-6),然后希望得出对应的成绩(61分)。
可是“表1”中明明1月6日的语文成绩是61分,为何在查询结果中1月6日语文成绩为10分呢?为何会出现这种记录错行显示呢?系统到底是什么运算过程?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

13#
 楼主| 发表于 2015-11-8 16:33:32 | 只看该作者
todaynew 发表于 2015-11-8 16:27
没什么好学的,呵呵。
通过查询视图和SQL视图的切换,一看就明白了。

希望如此。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-10 19:52 , Processed in 0.083495 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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