【问题标题】:MS Access: Show entire group, based on another fieldMS Access:显示整个组,基于另一个字段
【发布时间】:2016-09-21 16:54:35
【问题描述】:

我想显示所有班级和那些至少有一个“F”成绩的学生。

这里是源表:

ID  |  Students  |  Class  |  Grade  
1  |  Addams, W  |  History  |  A  
2  |  Addams, W  |  Biology  |  A  
3  |  Addams, W  |  French  |  B  
4  |  Jetson, E  |  Spanish  |  B  
5  |  Jetson, E  |  Geometry  |  B  
6  |  Jetson, E  |  Biology  |  F  
7  |  Rubble, B  |  English  |  F  
8  |  Rubble, B  |  Geometry  |  B         
9  |  Rubble, B  |  Biology  |  B  
10  |  Flintstone, P  |  Music  |  A  
11  |  Flintstone, P  |  Spanish  |  B

这是一份按学生分组的报告:

Addams, W  
    ---------------French    B  
    ---------------Biology    A  
    ---------------History     A  
Flintstone, P  
    ---------------Spanish   B  
    ---------------Music      A  
Jetson, E  
    ---------------Biology    F  
    ---------------Geometry  B  
    ---------------Spanish    B  
Rubble, B  
    ---------------Biology     B  
    ---------------Geometry  B  
    ---------------English     F  

再次,我想显示所有班级和那些至少有一个“F”成绩的学生,如下所示:

Jetson, E  
    ---------------Biology    F  
    ---------------Geometry  B  
    ---------------Spanish    B  
Rubble, B  
    ---------------Biology     B  
    ---------------Geometry  B  
    ---------------English     F   

任何帮助将不胜感激。

【问题讨论】:

    标签: sql ms-access-2010


    【解决方案1】:
    1. 创建以您的表为源的查询。拖放到第一列的学生字段中,然后在第二列中输入以下公式:IIf([Grade]=”F”,1,0),然后保存查询。 (默认情况下,Access 会将此列命名为“Expr1”,但您可以将其更改为您喜欢的任何内容)

    2. 使用查询 1 作为源创建第二个查询,从查询 1 中删除 2 列,分组,用公式对列求和,并在此列中添加 >=1 的条件,然后保存.您现在有一个表,其中只有至少有 1 个“F”的学生。 (您可以通过将光标放在底部查询的网格部分,右键单击并从提示框中选择“总计”来进行分组)

    3. 通过将 Student 字段与 1 对 1 匹配(即连接类型 1)连接起来,创建第三个查询,将第二个查询与原始源表联系起来。

    【讨论】:

      【解决方案2】:

      您可以使用子查询查询您的表,以在同一张表上查询任何具有 F 级的实例:

      SELECT a.ID, a.Students, a.Class, a.Grade
      FROM yourtable AS a
      WHERE EXISTS
      (
      SELECT '1'
      FROM yourtable AS b
      WHERE a.Students = b.Students
      AND b.Grade = 'F'
      );
      

      接下来,根据上述查询生成您的报告。

      【讨论】:

      • 在这里操作:效果很好;非常感谢。
      【解决方案3】:

      此处的操作:两个答案都有效;再次感谢。这是第二个答案的代码:

      查询 1 SELECT Students2.Students, IIf([Grade]="F",1,0) AS F_grade 来自学生2;

      查询 2 SELECT Query1.Students, Sum(Query1.F_grade) AS SumOfF_grade 从查询 1 GROUP BY Query1.学生 HAVING (((Sum(Query1.F_grade))>=1));

      查询 3 选择学生 2.学生、学生 2.班级、学生 2.年级 FROM Students2 INNER JOIN Query2 ON Students2.Students = Query2.Students;

      【讨论】:

        猜你喜欢
        • 2022-12-14
        • 1970-01-01
        • 2019-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多