我正在尝试在 Azure SQL 数据库的实例上运行 ROWNUMBER。它就是行不通。
;WITH cteA AS
(
SELECT 1 as Test1, 2 as Test2, 3 as Test3
UNION ALL Select 1, 1, 1
UNION ALL Select 1, 1, 1
UNION ALL Select 2, 1, 3
UNION ALL Select 2, 1, 3
)
SELECT
*,
ROW_NUMBER() OVER (PARITION BY a.test1 ORDER BY A.test1) AS RN
FROM
cteA A
这是我得到的输出:
Test1 |Test2 |Test3 |RN
1 |1 |1 |1
1 |1 |1 |2
1 |2 |3 |3
2 |1 |3 |1
2 |1 |3 |2
不知道为什么?我预计 RN 为 1-1-1-2-2
最佳答案
鉴于您的预期结果,我认为您实际上想要:
DENSE_RANK() OVER(ORDER BY A.test1)
这会为您提供一个增量数字,每次 Test1
更改时该数字都会增加 1。
<强> Demo on DB Fiddle :
Test1 | Test2 | Test3 | RN ----: | ----: | ----: | :- 1 | 1 | 1 | 1 1 | 1 | 1 | 1 1 | 2 | 3 | 1 2 | 1 | 3 | 2 2 | 1 | 3 | 2
关于sql - Azure SQL 数据库行号无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58845627/