DENSE_RANK or ROW by AccountNo 不太正确

DENSE_RANK or ROW by AccountNo not quite right

需要创建行或排名以按帐户重复。 (见下文以获得所需的结果)

尝试了各种 DENSE_RANKS、RANK、ROW_NUMBER,但总是得到不正确的值!

  , DENSE_RANK() OVER ( ORDER BY a.accountNo )
  , DENSE_RANK() over (partition by a.accountNo order by (SELECT NULL) ASC) dr1
  , ROW_NUMBER() OVER(ORDER BY  a.accountNo ASC) AS Ro
  , RANK() OVER (ORDER BY a.accountNo DESC) AS xRank

因此数据将如下所示:

Account | Rnk
12345   | 1
12345   | 2
12345   | 3
23456   | 1
23456   | 2
23456   | 3
23456   | 4

我知道我遗漏了一些简单的东西...

假设行号的顺序是任意的,你可以这样做:

, ROW_NUMBER() OVER(PARTITION BY a.accountNo ORDER BY @@SPID) As Rn

@@SPID Returns 当前用户进程的会话 ID,这意味着它在查询中是一个固定值 - 所以顺序实际上是任意的(而且比写 (SELECT NULL)).