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

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

我们不能简单地硬编码转换,因为每次都有任意数量的Types。

最佳答案

您可以使用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;

关于sql - 使用另一列作为键的“添加值”列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42058401/

10-16 15:19