当前位置:  开发笔记 > 编程语言 > 正文

相同值的相同Row_Number

如何解决《相同值的相同Row_Number》经验,为你挑选了1个好方法。

我需要行编号,其中ROW_NUMBER对于相同的值列是相同的:MFGPN(相同的MFGPN将始终按顺序).我还需要保留原始序列号.

这是我的桌子

No     MFGPN
1      Z363700Z01
2      Z363700Z01
3      0119-960-1
4      1A3F1-0503-01

我尝试使用RANK()来实现所需但遇到麻烦.

SELECT RANK() OVER(ORDER BY MFGPN) As [Item], MFGPN FROM Table1 ORDER BY [No] ASC

结果

Item   MFGPN           Desired Result
3      Z363700Z01            1
3      Z363700Z01            1
1      0119-960-1            2
2      1A3F1-0503-01         3

感谢你们的专家建议.谢谢!



1> Pரதீப்..:

使用DENSE_RANK窗口功能代替RANK.Rank当重复数据不会跳过序列Dense_Rank.

SELECT MFGPN,
        Dense_rank()OVER(ORDER BY m_no) as [Desired Result]
FROM   (SELECT no,
                MFGPN,
                Min(no)OVER(partition BY MFGPN) AS m_no
        FROM   (VALUES (1,'Z363700Z01' ),
                        (2,'Z363700Z01' ),
                        (3,'0119-960-1' ),
                        (4,'1A3F1-0503-01')) tc (no, MFGPN))a 

如果no不是唯一的,那么DENSE_RANK改为

Dense_rank()OVER(ORDER BY m_no,MFGPN)

结果:

+---------------+----------------+
|     MFGPN     | Desired Result |
+---------------+----------------+
| Z363700Z01    |              1 |
| Z363700Z01    |              1 |
| 0119-960-1    |              2 |
| 1A3F1-0503-01 |              3 |
+---------------+----------------+

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有