2014-03-29 116 views
2

我有一张雇员表,我想获得该月的前三名雇员。
我有一个存储过程,它采用员工ID并返回一个表示员工工作质量的数字。根据存储过程的结果对表格进行排序

我希望能找到这样的:

SELECT top (3) name 
FROM employee 
order by sp_emplyeePerformance employee.ID -- of course this doesn't work 

是这样的事情可能吗?或者我应该创建一个带有员工姓名和性能的临时表,然后查询临时表

+0

你需要去临时表的路线。 –

回答

1

您可能正在寻找User Defined Function而不是存储过程。该UDF将接受该员工的ID作为参数并返回一个值(员工的分数),以便您可以按此排序。

例子:

CREATE FUNCTION dbo.fnEmployee_score (@employeeId INT) 
RETURNS INT 
AS 
BEGIN 
    -- Your logic 
    RETURN @score; 
END 
+0

它的工作,thak you –

+1

请注意,性能可能不是那么好。 – Paul

+0

完全同意保罗 – MaxiWheat

0

你不能从SELECT查询执行存储过程。

的选项有:

  • 使用临时表来存储每个员工ID,执行为每个员工一个存储过程,然后查询临时表。

  • 将您的存储过程转换为函数。

  • 更改您的存储过程,一次完成整个employee的计算。

相关问题