sql - Azure SQL 数据库行号无法正常工作

标签 sql sql-server azure azure-sql-database row-number

我正在尝试在 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/

相关文章:

php - 从 2 个没有任何相似行的表中选择 *

sql - 多层次组合背包

sql-server - 出现 "data too large for variable"错误时如何正确访问 FireDAC 数据集的 VARCHAR(MAX) 参数值?

sql-server - 如何循环遍历 sql 中的 json 数组以选择特定索引处的值

postgresql - 将数据保留在运行 Postgres DB 的 Azure 容器应用程序中

sql - 优化 MySQL 查询以避免 "Using where; Using temporary; Using filesort"

sql - 在 SAS (WPS) 中使用 Proc SQL 时出现“无效列名”错误

sql-server - MSSQL JDBC 驱动程序在首次连接时不会连接到镜像故障转移合作伙伴

azure - 我可以将更大的字体文本添加到 https ://portal. azure.com 仪表板上的 Markdown 小部件吗?

azure - 在 Azure 管道中使用独立安装程序时如何运行 Karate 测试?