题
我试图使用SQL Server 2008中排名功能上由派生列排序的查询。下面是一个例子
SELECT
table.FirstName, table.LastName,
CalculatedValue(table.number) As Points,
ROW_NUMBER() OVER (ORDER BY points) AS 'Row Number'
FROM table
ORDER BY points
我总是得到一个错误的无效列名“点” 因为OVER功能不与别名的基础上,我读过工作。
没有人知道的替代哪里可以检索由派生列排序的结果集的顺序行数?
解决方案
如何使用派生的表(子查询)?我觉得像下面应该工作
SELECT
ROW_NUMBER() OVER (ORDER BY sub.Points) AS 'Row Number',
sub.FirstName,
sub.LastName,
sub.Points
FROM
(
SELECT
table.FirstName,
table.LastName,
CalculatedValue(table.number) As Points
FROM
table
) sub
ORDER BY
sub.Points
其他提示
使用一个CTE来计算您的积分,那么排名在CTE。
WITH tableWithPoints AS (
SELECT
table.FirstName, table.LastName,
CalculatedValue(table.number) As Points
FROM table)
SELECT FirstName, LastName, Points,
ROW_NUMBER() OVER (ORDER BY Points) AS 'Row Number'
FROM
tableWithPoints ORDER BY Points
不隶属于 StackOverflow