【问题标题】:query to show Active employees for a given time frame查询以显示给定时间范围内的活跃员工
【发布时间】:2013-04-07 03:54:42
【问题描述】:

我对构建它有点陌生,但已经走了很长一段路。

我使用 Access 2007 构建了一个数据库。我有一个显示员工信息的表:

Lname  
Fname  
Status  
HireDate  
TermDate

(状态:他们要么是非活动的(潜在的雇佣)、活动的或终止的)

我可以运行一个查询,按雇用日期显示所有员工,或者运行一个显示任期日期。

我们希望有一个查询,可以让我们计算给定月份内仍有多少司机。

假设 Joe Smith 于 2008 年 1 月 1 日被聘用,并于 2011 年 5 月 15 日被终止。如果我在 2011 年 5 月 31 日运行了一份报告,我需要如何构建查询以显示该员工在 5 月份在那里?

我用过>=Date() 和其他人。我可以在TermDate 下的标准中使用between #05/01/2011# and #06/01/2011#,但如果那里没有日期,则不会显示任何内容。我什至放下了一行并添加了“空”,但仍然没有,或者我得到了所有仍然存在的员工以及在日期之前被终止的员工。我不确定我做错了什么。

【问题讨论】:

    标签: ms-access ms-access-2007


    【解决方案1】:

    我不确定这个过滤条件的逻辑。我认为您的目标是确定在 2011 年 5 月的任何时候都在工作的所有司机。我最好的猜测是您至少需要 2 个条件来确定他们。

    • HireDate 2011 年 6 月 1 日之前
    • TermDate Null 或 >= 2011 年 5 月 1 日

    如果这些条件都足够了,SQL 可能会相当简单。

    SELECT e.Lname, e.Fname
    FROM employees_info AS e
    WHERE
        e.HireDate < #2011-6-1#
        AND
        (
            e.TermDate Is Null
            OR
            e.TermDate >= #2011-5-1#
        );
    

    听起来您正在设计视图中构建查询......这是一个很好且有用的功能。但是,很难描述如何在设计视图中构建该查询。因此,我建议您创建一个新查询,切换到 SQL 视图并粘贴该 SQL 文本。将employees_info 替换为您的实际表名,并修复我拼错的所有字段名。

    如果查询运行没有错误,您可以在设计视图和 SQL 视图之间来回切换,在其中一个视图中进行更改,然后检查它在另一个视图中的表示方式。

    SQL 不必按照我编写的方式进行格式化。我选择了这种方式,希望它能使WHERE 逻辑清晰。如果您从设计视图更改查询,Access 将重新格式化 SQL,因为它认为合适。但是,格式更改不应中断查询。

    我使用 yyyy-m-d 格式作为文字日期值。该格式避免了在哪些部分代表日期和月份方面可能出现的任何混淆,例如 #05-01-2011# 是打算代表 5 月 1 日还是 1 月 5 日。但是,当您更改查询时,Access 可能会将它们更改为 mm-dd-yyyy 格式。 (有时它的“有用”冲动很烦人。)

    我对某一点感到困惑。似乎每个员工都有一份记录。如果是这样,并且员工可以出于任何原因离职并在以后重新雇用,那么很难在单个记录中捕获不同的雇佣条款。如果您遇到这种情况,您可能需要修改表格设计。

    如果我误解了您的数据,请向我们展示一个简短的数据样本,以及您希望从基于该样本的查询中获得的输出。祝你好运。

    【讨论】:

    • 听起来不错!我会解决这个问题并回复你。我们每个月都会运行这个查询,所以我必须每个月都去更改日期,对吗?
    • 对于那个查询,是的。但是您可以创建一个不同的查询,在其中提供日期值作为参数来指示您希望查询评估的日期的开始和结束范围。这超出了您在此问题中提出的范围。当您准备好解决此类问题时,请提出一个新问题,并请提供一组简短的相关示例数据以及您想要基于该示例的输出。
    • 其实你可以通过SO搜索ms-access和参数查询找到足够的信息。在提交新问题之前执行此操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多