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)
).
需要创建行或排名以按帐户重复。 (见下文以获得所需的结果)
尝试了各种 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)
).