重复的值不应在 SQL 中一起显示

use*_*430 0 sql t-sql sql-server

我想显示一些数据,我的要求是重复的值不应显示在相邻的位置。现在表中的数据是按这个顺序排列的

ID     Name
1   A
2   A
3   B
4   C
5   B
6   B
7   C
8   C
9   C
Run Code Online (Sandbox Code Playgroud)

预期结果 - 应按以下顺序排列

ID   Name
1   A
3   B
4   C
2   A
5   B
7   C
6   B
8   C
9   C
Run Code Online (Sandbox Code Playgroud)

id'*_*238 5

这可以使用窗口函数来完成ROW_NUMBER

SELECT *, ROW_NUMBER() OVER (PARTITION BY Name ORDER BY ID) AS rn
FROM mytable
ORDER BY rn, Name
Run Code Online (Sandbox Code Playgroud)

数据库<>小提琴