2016-08-09 3 views
2

я следующая таблица, TempTable:Этикетки совпадения значения в колонке

Id  | Type 
-------------- 
01  L 
23  D 
45  L 
67  L 
89  L 

Я хотел бы иметь возможность добавить новый столбец, который постепенно подсчитывает, сколько из каждого типа строки появилась в таблице выше. В приведенном выше примере я хотел бы, чтобы результат выглядел так:

Id  | Type  | Type Count 
-------------------------------- 
01  L   L 1 
23  D   D 1 
45  L   L 2 
67  L   L 3 
89  L   L 4 

Любая помощь была бы оценена!

ответ

2

Использование row_number, а затем раздел по

SELECT 
Id, 
Type, 
[Type]+ ' '+CAST(Row_Number() OVER (partition by [Type] order by id) AS VARCHAR(5)) as 'Type Count' 
FROM 
TableName 
Order by Id 
+0

это работает или нет? –

+0

Perfect - большое спасибо! – chrisSpaceman

0

решения без row_number():

SELECT tn.Type, tn.Type || '-' || 
(SELECT 1+COUNT(Type) FROM TableName 
    WHERE id < tn.id AND Type = tn.Type) AS number_of_occurrences 
FROM TableName tn 
Смежные вопросы