2017-02-05 4 views
1

Надеюсь, что сама таблица указывает на проблему. По существу, с Type в левом столбце, можно добавить уникальный столбец код/​​значение, используя Type в качестве хэш-ключа/набор на основе внешнего вида порядках типов:Добавить столбец значений, используя другой столбец в качестве ключа

Type | Code 
----------- 
ADA | 1 
ADA | 1 
BIM | 2 
BIM | 2 
CUR | 3 
BIM | 2 
DEQ | 4 
ADA | 1 
... | ... 

Мы не можем просто трудно -кодировать преобразование как каждый раз, когда есть произвольное число Type.

+0

поэтому каждому типу должно быть присвоено уникальное значение, независимо от того, сколько раз оно появляется в таблице. это верно? –

+0

@vkp это правильно! – Rock

ответ

2

Вы можете использовать dense_rank():

select type, dense_rank() over (order by type) as code 
from t; 

Однако я бы посоветовал вам создать еще одну таблицу и использовать это:

Затем присоединиться, что:

select t.type, tt.TypeId 
from t join 
    types tt 
    on t.type = tt.type; 
+0

Элегантный! Работает как шарм! Еще раз спасибо, Гордон! – Rock