首页 > 解决方案 > 函数中关键字“with”附近的语法不正确

问题描述

我写了一个查询,但在关键字“with”附近出现语法错误。但我无法理解如何解决它。我正在使用 SQL Server。

CREATE FUNCTION getNthHighestSalary(@N INT) RETURNS INT AS
BEGIN
    RETURN (
        /* Write your T-SQL query statement below. */
        with result as (
          select salary, 
          dense_rank() over(order by salary desc) as salary_rank
          from employee
      )
      select salary 
      from result 
      where result.salary_rank = N

    );
END

标签: sqlsql-server

解决方案


这是一个标量值用户定义函数,因此您分配一个返回类型的局部变量,然后分配return它。

例如

CREATE FUNCTION getNthHighestSalary(@N INT) RETURNS INT AS
BEGIN
    declare @rv int;

    with result as 
    (
        select salary, 
        dense_rank() over(order by salary desc) as salary_rank
        from employee
    )
    select @rv = salary 
    from result 
    where result.salary_rank = @N;

    return @rv;
END

推荐阅读