【问题标题】:Advanced Ordering Or Grouping Of Query Results (having?), Access 2013查询结果的高级排序或分组(有?),Access 2013
【发布时间】:2015-02-27 20:35:38
【问题描述】:

我真的需要帮助。

我有一份教职员工名单,他们可以分配到某个部门,也可以只隶属于该部门。 我正在尝试查询但对结果进行排序,以便指定部门中出现的任何教师首先出现在列表中,而与指定部门相关的任何人都在查询结果的底部。

我希望所属学院在查询结果的底部!

这是我的例子: 我正在查询哲学,显示了 20 名教职员工,按字母顺序但没有特别的顺序,结果包括在其记录的第 1 部门或第 2 部门拥有哲学的任何人以及仅与该部门有关联的任何人。有些在实际部门(Dept 1 或 Dept 2 字段),但其他只是隶属于部门(Affiliation 1 - 5 字段),全部分散。

现在我希望查询结果按顺序显示:拥有 DEPT 1 或 DEPT 2 = Philosophy 的教职员工,以及拥有 Affiliations = Philosophy 的任何教职员工自己排在列表的底部。

我该怎么做?我试过Order By和Having,我试过Group By......似乎没有什么能按我想要的方式工作......我认为我没有使用写代码。 请,请帮助我。我已经坚持了好几个小时了。

请帮忙 - 这是我的查询代码:

    SELECT listOfAllFaculty.[ID], listOfAllFaculty.[lastName], listOfAllFaculty.[firstName], listOfAllFaculty.[middleInitialMiddleName], listOfAllFaculty.[position], listOfAllFaculty.[emeritusPosition], listOfAllFaculty.[department1], listOfAllFaculty.[department2], listOfAllFaculty.[school1], listOfAllFaculty.[school2], listOfAllFaculty.[affiliation1], listOfAllFaculty.[affiliation2], listOfAllFaculty.[affiliation3], listOfAllFaculty.[affiliation4], listOfAllFaculty.[affiliation5], listOfAllFaculty.[degree], listOfAllFaculty.[specialty], listOfAllFaculty.[awards], listOfAllFaculty.[other]
FROM listOfAllFaculty
WHERE (((listOfAllFaculty.department1)=[Type Department1])) Or (((listOfAllFaculty.department2)=[Type Department2])) Or (((listOfAllFaculty.affiliation1)=[Type Affiliation1])) Or (((listOfAllFaculty.affiliation2)=[Type Affiliation2])) Or (((listOfAllFaculty.affiliation3)=[Type Affiliation3])) Or (((listOfAllFaculty.affiliation4)=[Type Affiliation4])) Or (((listOfAllFaculty.affiliation5)=[Type Affiliation5]))

【问题讨论】:

    标签: sql group-by sql-order-by ms-access-2013 having


    【解决方案1】:

    也许这就是您在 order by 子句中使用 iif 的目的:

    SELECT listOfAllFaculty.[ID], listOfAllFaculty.[lastName], ...
    FROM listOfAllFaculty
    WHERE (((listOfAllFaculty.department1)=[Type Department1])) Or    
        (((listOfAllFaculty.department2)=[Type Department2])) Or 
        (((listOfAllFaculty.affiliation1)=[Type Affiliation1])) Or
         (((listOfAllFaculty.affiliation2)=[Type Affiliation2])) Or
         (((listOfAllFaculty.affiliation3)=[Type Affiliation3])) Or
         (((listOfAllFaculty.affiliation4)=[Type Affiliation4])) Or
         (((listOfAllFaculty.affiliation5)=[Type Affiliation5]))
    ORDER BY 
        IIF(listOfAllFaculty.department1=[Type Department1],0,
            IIF(listOfAllFaculty.department2=[Type Department2],0,1))
    

    【讨论】:

    • 这行得通!非常感谢。我确实有一个问题,如果我想做你所做的事情,然后按姓氏字母顺序排列,我该怎么做?我尝试了内置排序依据,但它破坏了上述排序。
    • 只需将其添加到 order by 子句的末尾 -- order by iif(...), listOfAllFaculty.[lastName]
    • 非常感谢。你让我今天一整天都感觉很好。这行得通,而且非常完美
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多