Pregunta

Supongamos que estamos teniendo los siguientes datos:

Key Value Desired Rank
--- ----- ------------
P1    0.6            2    
P1    0.6            2    
P1    0.6            2    
P2    0.8            1
P2    0.8            1
P3    0.6            3
P3    0.6            3

Quiero seleccionar Distinto Teclas ordenado por Valor DESC que se mostrará en una rejilla que soporta la paginación.

No sé cómo generar rango que los valores que aparecen en columna Rango deseado . De modo que pueda paginar correctamente sobre el conjunto de datos

Cuando traté de usar: DENSE_RANK () OVER (ORDER BY valor), el resultado fue

Key Value   DENSE_RANK() OVER(ORDER BY value)
--- ----- ------------
P1    0.6            2    
P1    0.6            2
P1    0.6            2    
P2    0.8            1
P2    0.8            1
P3    0.6            2    
P3    0.6            2

Cuando intento para seleccionar las dos primeras teclas “rango entre 1 y 2” que recibe de nuevo 3 llaves. Y esta ruinas del mecanismo de paginación necesario.

¿Alguna idea?

Gracias

¿Fue útil?

Solución

Si desea que las claves y valores distintos, por qué no usar distinta?

select distinct
  t.Key,
  t.Value
from
  YourTable t
order by
  t.value

¿Le actualle necesita el rango?

Si lo hace, todavía podría

select distinct
  t.Key,
  t.Value,
  dense_rank() over () order by (t.Value, t.Key) as Rank
from
  YourTable t
order by
  t.value

Este trabajo whould sin la distinta también.

Otros consejos

'Cuando intento para seleccionar los dos primeros llaves “rango entre 1 y 2” Recibo 3 teclas de vuelta. "

Esto se debe a que usted está pidiendo simplemente por valor, por lo que todas las claves con el mismo valor se les asigna el mismo valor. Así que hay que incluir la llave en la cláusula de pedidos. De esta manera:

DENSE_RANK() OVER (ORDER BY key ASC, value DESC)  
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top