【问题标题】:Find a number that is between two values and return field corresponding to lower value找到一个介于两个值之间的数字并返回对应于较低值的字段
【发布时间】:2017-09-25 20:58:50
【问题描述】:

另一个新手问题 - 我感谢大家在这里的帮助,我会回报其他人的青睐。这是我正在处理的:

我有一张表tblAssignment - 这只是一张更大的表的示例,但我希望它简单一些,以便我可以正确地将其传达给您,然后了解任何即将到来的答案背后的逻辑:

+---------+-------------+-------------------+
| Lesson  | SkillNeeded |  EmployeeAssigned |
+---------+-------------+-------------------+
| Math    |           0 |  Mike             |
| Math    |           2 | Jason             |
| Math    |           5 | Derek             |
| Math    |           9 | John              |
| Math    |          13 | Brian             |
+---------+-------------+-------------------+

所以,我将有一个所需的技能编号,在本例中,让我们使用数字 4。我需要让 Access 在表中(在 SkillNeeded 字段下)查找该值,然后我'希望它在 EmployeeAssigned 字段下建议一个名字。对于 4,这个数字落在 Derek 和 Jason 之间,他们分别有 2 和 5。我想要返回的是与我的号码之间的最低 SkillNeeded 号码相关联的名称;所以,在这个例子中,就是 Jason。

如果我的号码是 8,则查询将返回 Derek,因为 8 将介于 5 和 9 之间,并且它会采用与两者中较低的 SkillNeeded 数字相关联的名称,即 5和德里克。

我希望这是有道理的。再次感谢您的任何和所有帮助 - 提前感谢您!

-乔什

【问题讨论】:

  • 新手问题没有什么问题,但 Stack Overflow 的总体思路是您尝试自己发现答案(通过搜索类似问题),甚至测试您自己的解决方案。如果您仍然需要帮助,您应该发布您尝试过的内容以及要求。
  • 我认为在这种情况下您可以提供的最佳解释是:样本数据、条件和期望的输出。我在这里没有看到任何想要的输出
  • 谢谢你,C Perkins - 我会听从这个建议。并感谢所有帮助过的人!

标签: sql ms-access


【解决方案1】:

我从您的描述中假设您希望返回一个最大值为skillNeeded 的员工姓名,该值低于输入值。我将在示例中使用输入值 4。

您可以使用NOT EXISTS

  SELECT * FROM tblAssignment t1
  WHERE t1.SkillNeeded < 4 AND NOT EXISTS(
    SELECT 1 
    FROM tblAssignment t2
    WHERE t2.SkillNeeded < 4 AND t2.SkillNeeded > t1.SkillNeeded)

MAX

 SELECT * FROM tblAssignment
 WHERE SkillNeeded = (SELECT MAX(SkillNeeded) FROM tblAssignment WHERE SkillNeeded < 4)

【讨论】:

  • 我认为查询应该返回完全匹配(如果存在),但这些查询都没有这样做。
  • @CPerkins Jason 应该为数字 4 返回。这就是查询的作用。
  • @JoshC 很高兴你知道了。如果它非常有帮助,请点赞和/或选择它作为答案。
【解决方案2】:

尝试以下查询:

Select TOP 1* from tblAssignment
   group by SkillNeeded 
            having SkillNeeded <= 4
                  order by desc;

希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多