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。