DENSE_RANK или ROW по AccountNo не совсем верно

Необходимо создать строку или рейтинг для повторения по учетной записи. (см. ниже желаемый результат)

Пробовал различные значения 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

Я знаю, что упускаю что-то простое...


person XDSA5286    schedule 07.11.2019    source источник


Ответы (1)


Предполагая произвольный порядок номеров строк, вы можете сделать это:

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

@@SPID Возвращает идентификатор сеанса текущего пользовательского процесса, что означает, что это фиксированное значение в запросе, поэтому порядок на самом деле произвольный (и он короче, чем запись (SELECT NULL)).

person Zohar Peled    schedule 07.11.2019