Sql server 无法在MS SQL server Management studio中返回按变量分组的表

Sql server 无法在MS SQL server Management studio中返回按变量分组的表,sql-server,sql-order-by,user-defined-functions,sql-function,Sql Server,Sql Order By,User Defined Functions,Sql Function,我创建了以下函数: CREATE FUNCTION categorize ( @id VARCHAR(5), @var1_low INT, @var1_high INT, @var2_low DECIMAL(18,6), @var2_high DECIMAL(18,6) ) RETURNS TABLE AS RETURN (SELECT year, id, COUNT(id) AS

我创建了以下函数:

CREATE FUNCTION categorize (
     @id VARCHAR(5),
     @var1_low INT,
     @var1_high INT,
     @var2_low DECIMAL(18,6),
     @var2_high DECIMAL(18,6)
    )
RETURNS TABLE
AS RETURN
    (SELECT
        year,
        id,
        COUNT(id) AS totalnum,
        SUM(score) AS var1_sum
     FROM
        database1
     WHERE
        studentid = @id
        AND Score >= @var1_low
        AND Score <= @var1_high
        AND time >= @var2_low
        AND time <= @var2_high
     GROUP BY
        year
     ORDER BY
        year
    )
然后它说

ORDER BY子句在视图、内联函数和派生函数中无效 表、子查询和公共表表达式,除非TOP或FOR 还指定了XML


如何解决此问题?

删除函数中的ORDER BY子句,并将其写入SELECT子句,如下所示

SELECT * FROM yourFunction(params) ORDER BY yourColumn

如果阅读错误消息,您将看到您的选项是为XML指定TOP或FOR,或者删除ORDER BY子句。SQL Server因提供无用的错误消息而臭名昭著,但这不是其中之一。顺便说一句,您还需要在GROUPBY子句中添加id。