Использование функции ранжирования SQL с производным столбцом

StackOverflow https://stackoverflow.com/questions/1369938

  •  21-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь использовать функцию ранжирования 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top