gpt4 book ai didi

sql - 相同的 Row_Number 具有相同的值

转载 作者:行者123 更新时间:2023-12-02 15:09:11 24 4
gpt4 key购买 nike

我需要进行行编号,其中 ROW_NUMBER 对于相同值列是相同的:MFGPN(相同的 MFGPN 将始终按顺序排列)。我还需要按No维持原来的顺序。

这是我的 table

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

感谢各位专家的建议。谢谢!

最佳答案

使用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 |
+---------------+----------------+

关于sql - 相同的 Row_Number 具有相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41821215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com