sql назначить идентификатор категории при использовании заказа - PullRequest
3 голосов
/ 22 июня 2011

Я новичок в SQL.

Когда я заказываю SomeData на своей таблице, я получаю:

ID      SomeData
6       ABC
3       ABC
12      FG
1       FH
2       GI
4       JU
8       K3
5       K3
11      P7

отлично.но то, что я действительно хочу на выходе - это

ID      Category
6       1
3       1
12      2
1       3
2       4
4       5
8       6
5       6
11      7

. То есть каждый раз, когда SomeData изменяется в сортировке, я хочу увеличить категорию на единицу

. Я не вижу, как это сделать.Любая помощь будет принята с благодарностью.Спасибо.

Ответы [ 2 ]

3 голосов
/ 22 июня 2011

Если вы используете SQL-сервер, вы можете использовать функцию ранжирования DENSE_RANK() в сочетании с OVER:

SELECT ID
     , DENSE_RANK() OVER (ORDER BY SomeData)
       AS Category
FROM myTable
ORDER BY SomeData

См .: SQL-сервер: Функции ранжирования

2 голосов
/ 22 июня 2011
SELECT ROW_NUMBER() OVER(ORDER BY SomeData ASC) AS Category, otherfield1..
...