2017-02-05 2 views
1

テーブル自体に問題が記載されていることを願っています。別の列を使用して値の列をキーとして追加

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

我々は、単にハードすることはできません。基本的には左のTypeコラムで、タイプの出現順序に基づいて、ハッシュキー/セットとしてTypeを使用して独自のコード/値の列を追加することが可能です変換の度に、任意の数の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

関連する問題