MAK*_*MAK 1 sql sql-server sql-server-2008-r2
我有以下数据:
表:
CREATE TABLE tbl1
(
cola varchar(20),
colb int
);
INSERT INTO tbl1 VALUES('AB10029',1),('5023154',17),('05021286',17),('10029',32),('05023154',17),('5021286',17);
Run Code Online (Sandbox Code Playgroud)
鉴于记录:
Cola Colb
------------------
AB10029 1
5023154 17
05021286 17
10029 32
05023154 17
5021286 17
Run Code Online (Sandbox Code Playgroud)
注意:我想给非可匹配组合的等级为1(最后一个字符应该相同),colb和匹配组合应该是1,2,3等等.
预期产量:
Cola Colb Rn
-----------------------
AB10029 1 1
10029 32 1
5023154 17 1
05023154 17 2
5021286 17 1
05021286 17 2
Run Code Online (Sandbox Code Playgroud)
我的尝试:
SELECT Cola,Colb,
DENSE_RANK() OVER(PARTITION BY Colb ORDER BY RIGHT(Cola,5)) rn
FROm tbl1
ORDER BY RIGHT(Cola,5)
Run Code Online (Sandbox Code Playgroud)
你可以使用它
SELECT Cola,Colb,
ROW_NUMBER() OVER(PARTITION BY Colb,RIGHT(Cola,5) ORDER BY RIGHT(Cola,5)) rn
FROm tbl1
order by RIGHT(Cola,5),rn
Run Code Online (Sandbox Code Playgroud)
结果:
Cola Colb rn
-------------------- ----------- --------------------
AB10029 1 1
10029 32 1
05021286 17 1
5021286 17 2
05023154 17 1
5023154 17 2
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1048 次 |
最近记录: |