Holen Sie sich die Zeilennummer des Datensatzes in der Ergebnismenge der sql-server
Habe einen Tisch voller Dokumente mit Seriennummern - Spalten:
- int docid
- text schreiben
- submissionDate datetime
...und ich würde gerne herausfinden, wo eine bestimmte Seriennummer liegt in einer Abfrage für die Tabelle.
Wenn ich zum Beispiel bestellt der Ergebnismenge submissionDate asc, vielleicht möchte ich wissen, wo das Dokument 34 ist innerhalb dieser Ordnung (d.h. ist es in der position 11?)
Wie mache ich das?
- Welche version von SQL Server?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es sieht aus wie Sie versuchen, die Nummer der Zeile, auch wenn das nicht eine der Zeilen zurückgegeben wird. Sie können einen Allgemeinen Tabellenausdruck für die:
Dies erfordert auch eine SQL Server 2005 oder höher natürlich.
SQL Server 2005+, mit Video-Analyse-Funktionen:
Nicht-analytische version
Dieser Ansatz Risiken nicht-sequenziellen Werte, denn wenn es zwei (oder mehr) Datensätze mit der gleichen
submissiondate
Wert-Sie alle haben den gleichen Wert für die position. Es ist auf Augenhöhe mit RANG oder DENSE_RANK analytische Funktionen, da ROW_NUMBER immer gewähren einen eindeutigen Wert für jeden Datensatz ohne Berücksichtigung der doppelten Werte.Können Sie die Funktion Fenster
rank()
.Beispiel (aus MSDN):
Es ist sehr mächtig.
It-SQL-standard und es sollte funktionieren in SQL Server 2005 und neueren Versionen.