Frage

Angenommen, wir die folgenden Daten haben:

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

Ich möchte Distinct wählen Tasten bestellt von Wert DESC in einem Raster angezeigt werden, dass Träger Paginierung.

Ich weiß nicht, wie Rang zu erzeugen, wie die Werte angezeigt in Gewünschter Rang Spalte . Damit ich richtig über den Datensatz Paginieren kann

Als ich zu verwenden versucht: DENSE_RANK () OVER (ORDER BY-Wert), das Ergebnis war

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

Wenn ich versuche, die ersten beiden Tasten „Rang zwischen 1 und 2“ zu wählen, erhalten I 3 Schlüssel zurück. Und diese Ruinen der erforderliche Paginierung Mechanismus.

Irgendwelche Ideen?

Danke

War es hilfreich?

Lösung

Wenn Sie die eindeutigen Schlüssel und Werte möchten, verwenden warum nicht unterscheidbar?

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

Haben Sie den Rang benötigen actualle?

Wenn Sie das tun, könnten Sie immer noch

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

Diese whould Arbeit ohne die deutlichen als auch.

Andere Tipps

"Wenn ich versuche, die ersten beiden zu wählen Tasten „Rang zwischen 1 und 2“ I erhalten zurück 3 Schlüssel. "

Das ist, weil Sie gerade durch VALUE Bestellung, so dass alle Tasten mit dem gleichen Wert den gleichen Rang zugeordnet sind. So müssen Sie den Schlüssel in der Reihenfolge Klausel aufzunehmen. Wie folgt aus:

DENSE_RANK() OVER (ORDER BY key ASC, value DESC)  
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top