2011-09-29 12 views
5

Wiem, że możemy wygenerować numer_wiersza w instrukcji select. Ale numer wiersza zaczyna się od 1, muszę wygenerować od 2 i więcej.jak generować numery seryjne + Dodaj 1 w instrukcji select

przykład

party_code 
---------- 
R06048 
R06600 
R06791 
(3 row(s) affected) 
I want it like 

party_code serial number 
---------- ------------- 
R06048  2 
R06600  3 
R06791  4 

Aktualny Używam poniżej select do generowania regularnych numer wiersza.

SELECT party_code, ROW_NUMBER() OVER (ORDER BY party_code) AS [serial number] 
FROM myTable 
ORDER BY party_code 

Jak zmodyfikować powyższą instrukcję i zacząć od 2?

+8

ooh, będziesz kopać siebie ... – AakashM

+1

Próbowałeś 'ROW_NUMBER() + 1'? –

Odpowiedz

16
SELECT party_code, 1 + ROW_NUMBER() OVER (ORDER BY party_code) AS [serial number] 
FROM myTable 
ORDER BY party_code 

dodać: ROW_NUMBER() ma niezwykłą składni i może być mylące z różnymi OVER i PARTITION BY klauzul, ale kiedy wszystko jest powiedziane i zrobione to nadal tylko funkcja o liczbowej wartości zwracanej, a powrót wartości można manipulować w taki sam sposób, jak każdą inną liczbę.

+1

+1 Twój niski owoc, sir. Dobre wyjaśnienie. :) –

2

nie wiem dużo o SQL Server, ale któryś z nich będzie działać:

SELECT party_code, 1 + ROW_NUMBER() OVER (ORDER BY party_code) AS [serial number] 
FROM myTable 
ORDER BY party_code 

LUB

SELECT party_code, serial_numer + 1 AS [serial number] FROM 
(SELECT party_code, ROW_NUMBER() OVER (ORDER BY party_code) AS [serial number] 
FROM myTable) 
ORDER BY party_code 
Powiązane problemy