2010-07-27 5 views
6

Ich denke, jede Zeile in SQL Server erhält eine eindeutige Nummer. Wie kann ich das in meine SQL-Abfrageergebnisse einbeziehen?Zeilennummer in Abfrageergebnis einschließen (SQL Server)

+0

Soweit ich weiß, ther ist keine eindeutige Nummer, nur die Primärschlüssel, die Sie deklariert. – Hinek

+0

Normalerweise ist das erste Feld in der Tabelle - möglicherweise mit dem Namen 'id' oder so ähnlich - der Primärschlüssel, der normalerweise eine Ganzzahl ist, die für jede neue Zeile um 1 zunimmt ... also ist es wie eine Zeilennummer. Aber wir müssten wissen, wie die Tabelle organisiert ist, um zu sagen, ob es ein ID-Feld gibt und, wenn ja, wie man es abruft. – ewall

Antwort

22

Wenn Sie sich auf die Zeilennummer beziehen, die von Management Studio beim Ausführen einer Abfrage bereitgestellt wird, gibt es keine Möglichkeit, diese zu erhalten, da sie nicht wirklich existiert. Management Studio generiert das im laufenden Betrieb. Sie können jedoch eine fortlaufende Nummer unter Verwendung der ROW_NUMBER Ranking-Funktion neu erstellen, wenn Sie SQL Server 2005 oder höher verwenden. Beachten Sie, dass Sie niemals davon ausgehen sollten, dass die Datenbank die Zeilen in einer bestimmten Reihenfolge zurückgibt, sofern Sie keine Order By-Anweisung angeben. So Ihre Abfrage könnte wie folgt aussehen:

Select .... 
    , Row_Number() Over (Order By T.SomeColumn) As Num 
From Table As T 
Order By T.SomeColumn 

Die Sortierung nach der Over-Klausel verwendet wird, um den Auftrag für die Erstellung der sequentiellen Zahlen zu bestimmen. Die Order-By-Klausel am Ende der Abfrage wird verwendet, um die Reihenfolge der Zeilen in der Ausgabe zu bestimmen (d. H. Die Reihenfolge für die Sequenznummer und die Reihenfolge der Zeilen kann unterschiedlich sein).

+0

Schön :). Ich habe row_number über meine Primärschlüsselspalte geschrieben. Auf diese Weise bekam ich eine fortlaufende Nummer von 1 ohne Lücken (selbst wenn die Zeile gelöscht wurde). – TCM

2

Die Einzigartigkeit Ihres Ergebnisses ist immer Ihr Primärschlüssel.

Aber es gibt etwas namens ROW_NUMBER-Funktion, die als eindeutige Identität der Zeile in einem bestimmten Ergebnis verwendet werden kann.

SELECT zip,city,state,latitude,longitude,timezone,dst, 
      ROW_NUMBER() OVER (ORDER BY zip) AS num 
      FROM dbo.zipcode; 
-1

Ich glaube, Sie diese benutzen sollte ....

DCount('Column_Name','Table_Name','Column_Name <= ' & [Column_Name]) as SR

+0

'DCount()' ist keine Funktion in SQL Server. – Smandoli

Verwandte Themen