DENSE_RANK в вычисляемом столбце - PullRequest
1 голос
/ 06 января 2012
CASE 
          WHEN [col1] = 's' THEN 8
          WHEN [col1] = 't' THEN 6 
          WHEN [col1] = 'u' THEN 9
          WHEN [col2] = 'v' THEN 1
.......
END AS product,
DENSE_RANK() OVER (ORDER BY product ASC) AS [Rank]
FROM dbo.TableA

DENSE_RANK() не работает для вычисляемого столбца Product, показывающего

Неверное имя столбца 'product'.

Как нанести DENSE_RANK() на продукт?

1 Ответ

3 голосов
/ 06 января 2012

Вы можете сделать что-то вроде этого:

SELECT 
  *, 
  DENSE_RANK() over (order by product)
FROM (
SELECT 
  CASE 
          WHEN [col1] = 's' THEN 8
          WHEN [col1] = 't' THEN 6 
          WHEN [col1] = 'u' THEN 9
          WHEN [col2] = 'v' THEN 1
 ...
END AS product
FROM dbo.TableA
) t
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...