使用另一列作为键添加值列

时间:2017-02-05 23:10:49

标签: sql postgresql psql

希望表格本身说明问题所在。基本上左侧的Type列,是否可以使用Type作为基于类型的外观顺序的散列键/集添加唯一的代码/值列:

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

我们无法在每次Type s的任意数量时对转换进行硬编码。

1 个答案:

答案 0 :(得分:2)

您可以使用dense_rank()

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

但是,我建议你创建另一个表并使用它:

create table Types as (
    select row_number() over (order by type) as TypeId,
           type
    from t
    group by type;

然后,加入:

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