Ранг функция дает неправильный рейтинг - PullRequest
0 голосов
/ 09 октября 2018
select distinct a.pattern ,convert(numeric(18,0) ,isnull(b.[DCount]as [DCount]
,DENSE_RANK () OVER ( Partition by a.pattern order by b.[DCount]desc ) as [Rank]  
from a, b

Дает вывод как

Pattern Dcount  Rank
A   0   1
A   0   1
A   0   2
A   0   2
B   0   2
B   0   2
B   0   2
B   0   2
C   0   2
C   0   2
C   0   2

В то время как требуемый вывод

Pattern Dcount  Rank
A   0   1
A   0   1
A   0   1
A   0   1
B   0   1
B   0   1
B   0   1
B   0   1
C   0   1
C   0   1
C   0   1

Ответы [ 3 ]

0 голосов
/ 09 октября 2018

Возможно, вы просто хотите получить рейтинг dcount.Если так:

select distinct a.pattern, convert(numeric(18,0),
       coalesce(b.DCount, 0) as DCount,
       dense_rank() over (order by b.[DCount] desc) as [Rank]  
from a cross join b;
0 голосов
/ 09 октября 2018

Попробуйте: вам нужно разделить по шаблону, счету и упорядочить только по шаблону

демо

select *,dense_Rank() over(partition by Pattern,dcount order by Pattern) from tablename
0 голосов
/ 09 октября 2018

использовать DENSE_RANK ниже пути

select * ,DENSE_RANK () OVER ( order by Pattern, Dcount) as rn from t
...