如何对行进行排序以交替出现(例如 ABAB ... )?

Fen*_*ang 3 sql-server sorting

假设我有一列 x 的值是 A 和 B。例如:

Row X
1   A
2   A
3   A
4   B
5   B
6   B
Run Code Online (Sandbox Code Playgroud)

现在,我想将它们分类为这种方式:

Row X
1   A
2   B
3   A
4   B
5   A
6   B
Run Code Online (Sandbox Code Playgroud)

当然,我可以新建一个 Column Y。然后将 A 行分配给奇数 (1, 3, 5, ...),将 B 行分配给偶数 (2, 4, 6, ...),然后按 Y 列排序。但是有没有更简单的方法来实现这一目标?

如果答案可以与 MS SQL 一起使用,那将是最好的。

Ken*_*her 9

尝试这个:

CREATE TABLE SortTest (val char(1))

INSERT INTO SortTest VALUES 
('A'),
('A'),
('A'),
('B'),
('B'),
('B')

SELECT val
FROM SortTest
ORDER BY row_number() OVER (PARTITION BY val ORDER BY val), val
Run Code Online (Sandbox Code Playgroud)