窗口函数不支持常量作为SQL Server TempTable中的ORDER BY子句表达式



这是我的动态SQL查询:

SET @SQL = 'SELECT * FROM 
                (SELECT *, ROW_NUMBER() OVER(ORDER BY '+ @sortBy +') AS rowNumber FROM #temp) A 
            WHERE A.rowNumber BETWEEN ' + CONVERT(varchar(9),
(@startIndex -1) * @PageSize + 1) + ' AND ' + CONVERT(varchar(9), 
(((@startIndex -1) * @PageSize + 1) + @PageSize) - 1)+''
print(@SQL)
exec(@SQL)

以下是PRINT命令的输出:

SELECT * 
FROM
   (SELECT *, ROW_NUMBER() OVER(ORDER BY Typename) AS rowNumber       
    FROM #temp) A 
WHERE A.rowNumber BETWEEN 1 AND 5 

其中Typename@sortBy参数值。

但是我得到这个错误:

窗口函数不支持常量作为ORDER BY子句表达式。

建议在字符串连接中使用QUOTENAME(@sortBy),这将确保本地变量的内容作为列名是有效的。

这可能不是解决方案,但如果它有帮助…

窗口函数不支持常量作为ORDER BY子句表达式。

当您尝试在ORDER BY clause of a windowed function

中设置constant value时,通常会观察到此错误。

like ROW_NUMBER() OVER(ORDER BY 'const_val')

相关内容

  • 没有找到相关文章

最新更新