Problem:
Mam tabelę, która rejestruje wiersze danych w foo
. Za każdym razem, gdy wiersz jest aktualizowany, wstawiany jest nowy wiersz wraz z numerem wersji. Tabela wygląda następująco:Wybieranie najnowszej i określonej wersji w każdej grupie rekordów dla wielu grup
id rev field
1 1 test1
2 1 fsdfs
3 1 jfds
1 2 test2
Należy zauważyć, że w tabeli ostatnim rekordem jest nowsza wersja pierwszego wiersza.
Czy ktoś wie na temat skutecznego sposobu sprawdzania najnowszej wersji wierszy i konkretnej wersji rekordów? Na przykład zapytanie o numer rev=2
zwróci wiersz 2, 3 i 4 (nie wymieniony pierwszy wiersz), natomiast zapytanie o numer rev=1
powoduje, że wiersze z rev < = 1 i w przypadku duplikatów id, o wyższej wersji numer jest wybrany (rekord: 1, 2, 3).
Nie jestem pewien, czy rzeczywiście jest to w ogóle możliwe w SQL Server ...
nie wolałby, aby powrócić wynik w iteracyjny sposób.
Jaka wersja serwera sql używasz? –
MS SQL 2008 R2, ale najlepiej chciałbym wygenerować kwerendę, która nie zależy od niczego szczegóły serwera sql. – orange
Dlaczego to pytanie jest oznaczone jako "rekursja" i "rcs"? –