2010-07-27 14 views
6

Myślę, że każdy wiersz w serwerze sql otrzymuje unikalny numer. Jak mogę uwzględnić to w moich wynikach zapytania SQL?Dołącz numer wiersza w wyniku kwerendy (SQL Server)

+0

O ile mi wiadomo, Ther ma unikalny numer, tylko klucz podstawowy, który zadeklarował. – Hinek

+0

Zazwyczaj pierwsze pole w tabeli - prawdopodobnie o nazwie "id" lub coś w tym rodzaju - jest kluczem podstawowym, który jest zwykle liczbą całkowitą, która zwiększa się o 1 dla każdej nowej linii ... więc jest jak numer wiersza. Musimy jednak wiedzieć, w jaki sposób zorganizowany jest stół, aby określić, czy istnieje pole identyfikacyjne, a jeśli tak, jak je odzyskać. – ewall

Odpowiedz

22

Jeśli chodzi o numer wiersza podany przez Management Studio podczas uruchamiania zapytania, nie ma sposobu, aby to uzyskać, ponieważ tak naprawdę nie istnieje. Management Studio generuje to w locie. Można jednak odtworzyć numer kolejny przy użyciu funkcji rankingu ROW_NUMBER, jeśli używany jest program SQL Server 2005 lub nowszy. Uwaga: nigdy nie powinieneś zakładać, że baza danych zwróci wiersze w określonej kolejności, chyba że dołączasz instrukcję Order by. Tak więc zapytanie może wyglądać następująco:

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

Polecenie Zamówienie w klauzuli Over służy do określania kolejności tworzenia kolejnych numerów. Klauzula kolejności na końcu zapytania służy do określenia kolejności wierszy w danych wyjściowych (tj. Kolejność numerów porządkowych i kolejność wierszy mogą być różne).

+0

Nice :). Zrobiłem row_number na mojej kolumnie klucza głównego. W ten sposób otrzymałem numer sekwencyjny od 1 bez żadnych przerw (nawet jeśli wiersz został usunięty). – TCM

2

Wyjątkowość wyniku zawsze będzie stanowić klucz podstawowy.

Ale istnieje funkcja o nazwie ROW_NUMBER, która może być użyta jako unikalna tożsamość wiersza w określonym wyniku.

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

myślę, że należy wykorzystać ten jeden ....

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

+0

'DCount()' nie jest funkcją w SQL Server. – Smandoli

Powiązane problemy