Domanda

Si supponga che stiamo avendo i seguenti dati:

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

Voglio selezionare distinto Chiavi ordinato dal Valore DISC per essere visualizzato in una griglia che supporti l'impaginazione.

Non so come generare rango come i valori visualizzati in colonna Classifica desiderata . In modo che posso impaginare correttamente il set di dati

Quando ho provato ad usare: DENSE_RANK () OVER (ORDER BY valore), il risultato è stato

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

Quando provo a selezionare i primi due tasti “rango tra 1 e 2” Mi riceve di nuovo 3 tasti. E questo resti il ??meccanismo di paginazione richiesta.

Tutte le idee?

Grazie

È stato utile?

Soluzione

Se si desidera che le chiavi e valori distinti, perché non utilizzare distinte?

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

Ti actualle bisogno di rango?

Se lo fai, è ancora possibile

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

Questo lavoro whould senza il distinto pure.

Altri suggerimenti

  

'Quando provo a selezionare i primi due   chiavi “rango tra 1 e 2” Ricevo   indietro 3 chiavi. '

Questo è dovuto al fatto che si sta ordinando solo per valore, in modo da tutte le chiavi con lo stesso valore viene assegnato lo stesso valore. Quindi è necessario includere il KEY nella clausola ordinazione. In questo modo:

DENSE_RANK() OVER (ORDER BY key ASC, value DESC)  
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top