2017-09-25 46 views
1

另一个新手问题 - 我很欣赏每个人在这里都很有帮助,我会返还给其他人。下面是我处理的:找到一个介于两个值之间的数字,并返回对应于较低值的字段

我有一个表tblAssignment - 这仅仅是一个更大的桌子的样品,但我希望它是简单的,所以我可以适当地转告你,然后了解背后的逻辑任何到来的答案:

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

所以,我想有一个期望的技能数量,而在这个例子中,我们使用的数量4.我需要访问查询,在表中的值(下SkillNeeded场),我希望它在EmployeeAssigned字段下建议一个名称。这个数字是4,分别是Derek和Jason,分别是2和5。我想要返回的是与最低的SkillNeeded相关的名字,我的号码介于两者之间;所以,在这个例子中,这将是杰森。

如果我的号已经8,查询将返回德里克,因为8是5和9之间,并会采取与低关联的名称SkillNeeded数的两个,这将是5和德里克。

我希望这是有道理的。再次,任何和所有的帮助将得到真正的赞赏 - 先谢谢你!

-Josh

+0

新手问题没有错,但Stack Overflow的一般想法是你试图自己发现答案(通过搜索类似的问题),甚至测试你自己的解决方案。如果你仍然需要帮助,你应该发布你已经尝试过的要求。 –

+1

我认为您可以在这种情况下提供的最佳解释是:样本数据,条件和期望的输出。我在这里没有看到任何期望的输出 – Sami

+1

谢谢C珀金斯 - 我会遵循这个建议。并感谢所有帮助过的人! – JoshC

回答

0

我从要与比输入值低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) 
+0

我假定查询应该返回完全匹配(如果存在),但这些查询都不会这样做。 –

+0

@CPerkins贾森应该返回数字4.这是什么查询。 –

+0

@JoshC很高兴你已经知道了。如果它非常有帮助,那么请upvote和/或选择这个作为答案。 –

0

尝试以下查询:

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

希望它能帮助!

+0

您是否尝试过查询? –

相关问题