根据存储过程的结果对表进行排序

时间:2014-03-29 21:19:46

标签: sql sql-server

我有一张员工表,我希望得到本月的前三名员工 我有一个存储过程,它接受员工ID,并返回一个表示员工工作质量的数字。

我希望找到类似的东西:

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

这样的事情可能吗?或者我应该创建一个包含员工姓名和绩效的临时表,然后查询临时表

2 个答案:

答案 0 :(得分:1)

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

示例:

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

答案 1 :(得分:0)

您无法从SELECT查询执行存储过程。

您的选择是:

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

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

  • 更改您的商店程序,一次性对整个employee进行计算。