下面的列如何转换为带有升序组的双列(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
我尝试在单个查询中获取它但失败了。 我们需要使用组集吗?
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