【问题标题】:sorting a table according to the result of a stored procedure根据存储过程的结果对表进行排序
【发布时间】:2014-03-29 21:19:46
【问题描述】:

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

我希望找到类似的东西:

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

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

【问题讨论】:

  • 你需要走临时表路线。

标签: sql sql-server


【解决方案1】:

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

例子:

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

【讨论】:

    【解决方案2】:

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

    您的选择是:

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

    • 把你的存储过程变成一个函数。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-02
      • 1970-01-01
      • 1970-01-01
      • 2018-08-13
      • 1970-01-01
      相关资源
      最近更新 更多