下面的列如何转换为带有升序组的双列(sql)

How below column transform into double column with ascending group(sql)

我尝试在单个查询中获取它但失败了。 我们需要使用组集吗?

colA
200
400
300
500
200

转化为

colA colB
200 1
300 2
300 2
400 3
500 4

如果您的 SQL 数据库可用,可以使用 DENSE_RANK() 窗口函数

喜欢

select ColA, 
DENSE_RANK() OVER( order by ColA) as colB
from yourtable

如果您的 RDBMS 支持,您可以使用 ROW_NUMBER() OVER (ORDER BY colA)

create table t (colA int);
insert into t values (300),(400),(300),(500),(200);
select
  row_number() over (order by colA) colB,
  colA
from t
order by colA
colB | colA
---: | ---:
   1 |  200
   2 |  300
   3 |  300
   4 |  400
   5 |  500

db<>fiddle here