2013-05-20 31 views
0

你好朋友我被困在写一个查询。 你能帮我一下吗? 我有一个名为prog的表,并且有doj列。 在这里name列我有所有员工的名字,并在doj列我有他们的加入日期。 我必须找出最有经验的员工的名字,所以我写此查询使用加盟他们的最新发现是最有经验的员工:找到最有经验的员工的名字

SELECT 
min(DATEDIFF(YEAR,doj,GETDATE()) - 
(CASE WHEN 
DATEADD(YY,DATEDIFF(YEAR,doj,GETDATE()),doj) > GETDATE() 
THEN 1 
ELSE 0 END)) AS 'least experience' 
FROM programmer 

我无法找出员工的name。 如果我使用列namegroup by我得到所有员工名单和经验年。 如何才能找出只有那些经验最少的特定员工的姓名。 提前致谢,并等待回复。

+1

你在这个表中有一个主键吗? 我建议你可以在这个表上使用Employee_id作为主键。 –

+0

@pratikgarg不,我没有任何主键在这张表上&我没有employee_id列....还有很多其他列,但我只需要这两列我的查询,这就是为什么我没有发布其他栏 – prags

+2

*如果它没有主键,它不是一个表..... * –

回答

7

这将选择具有最近开始日期的程序员。

Select top 1 name, doj 
from programmer 
order by doj desc 
+0

感谢您的回复....这给了我想要的输出...我想我怎么能忘记顶级功能....但任何方式感谢您的帮助..... – prags

相关问题