2016-09-01 5 views
0

У меня есть таблица, как это в SQL сервере 2014:Назначение номера строки в соответствии со значением столбца SQL Server?

name  
a  
a  
b  
b  
b  
c  
d  
d  
d  

Я хочу, чтобы создать еще один столбец, который S.No. , но значение серийного номера будет присвоено в соответствии с столбцом имени. Если имя в 2 раза превышает значение s.no. будет 1 и 2. Если d в 3 раза больше, чем значение для d будет 1,2 и 3, и снова счетчик начнет с 1 для e. так что стол будет выглядеть так:

name S.no. 
a  1 
a  2 
b  1 
b  2 
b  3 
c  1 
d  1 
d  2 
d  3 

Любое решение? Спасибо за помощь.

ответ

2

Использование ROW_NUMBER():

SELECT name, ROW_NUMBER() OVER (PARTITION BY name ORDER BY (SELECT 1)) [S.no.] 
FROM T 
1

Просто по-другому, используя Count()

select 
Name, 
Count(1) over (partition by Name ORDER BY Name ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as Slno 
from MyTable 
Смежные вопросы