我有一张员工表,我希望得到本月的前三名员工 我有一个存储过程,它接受员工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
答案 1 :(得分:0)
您无法从SELECT
查询执行存储过程。
您的选择是:
使用临时表存储每个员工ID,为每个员工执行存储过程,然后查询临时表。
将存储过程转换为函数。
更改您的商店程序,一次性对整个employee
进行计算。