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

Sql 根据存储过程的结果对表进行排序,sql,sql-server,Sql,Sql Server,我有一张员工表,我想获得本月前三名员工。 我有一个存储过程,它接受员工ID并返回一个数字,指示员工的工作质量 我希望能找到像这样的东西: SELECT top (3) name FROM employee order by sp_emplyeePerformance employee.ID -- of course this doesn't work 这可能吗?或者我应该创建一个包含员工姓名和绩效的临时表,然后查询临时表,而不是存储的进程。该UDF将接受员工的ID作为参数,并返回一个值(员工

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

我希望能找到像这样的东西:

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

这可能吗?或者我应该创建一个包含员工姓名和绩效的临时表,然后查询临时表,而不是存储的进程。该UDF将接受员工的ID作为参数,并返回一个值(员工的分数),因此您可以根据它进行排序

例如:

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

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

你的选择是:

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

  • 将存储过程转换为函数

  • 更改存储过程,一次性对整个
    员工进行计算


您需要选择临时表路线。