【问题标题】:I want to order by alternating numbers in MS SQL like 1, 2, 3, 1, 2, 3 etc我想通过 MS SQL 中的交替数字进行排序,例如 1、2、3、1、2、3 等
【发布时间】:2012-09-07 22:00:24
【问题描述】:

我在 MS SQL 数据库中有一个表,其列包含值 1 或 2 或 3

现在我想做一个 ORDER BY 得到这样的记录 1,2,3,1,2,3,1,2,3

这看起来比它更难.. 我已经编程了 10 年,而这个让我陷入困境;-)

有人有什么好主意吗?

【问题讨论】:

  • 哪一年?你为什么要这样做?还涉及哪些其他数据?多少行?
  • 如果表包含 3 行 1、4 行 2 和 5 行 3,您期望得到什么结果?是什么决定了哪些值为 1 的行是第一个 1,第二个 1,等等?
  • 没有更多细节,我会尝试这种通用方法:联合三个选择(每个值 1、2、3 一个)在每个选择中包含一个排名,然后按排名对联合结果进行排序按价值。排名部分见support.microsoft.com/kb/186133

标签: sql sql-server tsql sql-order-by


【解决方案1】:
DECLARE @T TABLE(A INT) 

INSERT @T VALUES(1),(1),(1),(2),(2),(2),(3),(3),(3)

SELECT A FROM (
SELECT ROW_NUMBER() OVER(PARTITION BY A ORDER BY A) R, A
FROM @T
) B
ORDER BY R, A

【讨论】:

    猜你喜欢
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 2011-12-16
    • 1970-01-01
    相关资源
    最近更新 更多