2011-01-06 13 views
7

Chciałbym stworzyć SELECT zapytania z AutoNumber .. jak ..AutoNumber w SELECT w SQL Server

select * from tbl1 

da mi wszystko od stołu.

Wynik chciałbym dostać to ..

1   data 
2   data 
3   data 

Więc jak mogę zrobić, aby uzyskać ten numer .. ??

jak ..

select (for autonumber), * from tbl1 

dane w moim stole będzie powtórzony (bez unikalne dane)

Odpowiedz

19

Zastosowanie ROW_NUMBER:

SELECT ROW_NUMBER() OVER (ORDER BY col1) AS rn, * FROM tbl1 

Aby filtrować wyniki na podstawie liczby wierszy użytku to:

SELECT * FROM 
(
    SELECT ROW_NUMBER() OVER (ORDER BY col1) AS rn, * FROM tbl1 
) T1 
WHERE rn = 5 
+0

tak .. to jest prawidłowa odpowiedź. Chciałbym zrobić coś jak .. SELECT ROW_NUMBER() OVER (ORDER BY col1) AS rn, * FROM tbl1 gdzie rn = 5; Najwyraźniej to nie działa w ten sposób ... jakieś rozwiązanie? – william

+1

@william: Musisz wygenerować numer wiersza w wyprowadzonej tabeli i filtr w zewnętrznym wyborze. Zaktualizuję moją odpowiedź, aby to pokazać. –

+0

Mogę wyglądać głupio, aby zadać to pytanie. Ale co to jest T1? I nie mogę umieścić "porządku przez" w wewnętrznej instrukcji select, czy to normalne? – william

0

Może być konieczne znalezienie przesunięcia tożsamości, np. Ostatnia ID drugiej tabeli:

DECLARE @lastAutoID int 
SET @lastAutoID = abs((Select max(convert(float,[ConsID])) 
FROM [RXPIPEDB]...[consumption])) 

Następnie za pomocą ROW_NUMBER():