Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak dodać numer kolejny dla grup w zapytaniu SQL bez tabel tymczasowych

Przykładowe dane

create table sometable([group] varchar(10), id int, somedata int)
insert sometable select 'Horses', 9, 11
insert sometable select 'chickens', 19, 121
insert sometable select 'Horses', 29, 123
insert sometable select 'chickens', 49, 124
insert sometable select 'Cows', 98, 1
insert sometable select 'Horses', 99, 2

Zapytanie

select
    Record = ROW_NUMBER() over (order by [Group], id),
    [Group],
    GroupSequence = DENSE_RANK() over (order by [Group])
from sometable

Wyjście

Record               Group      GroupSequence
-------------------- ---------- --------------------
1                    chickens   1
2                    chickens   1
3                    Cows       2
4                    Horses     3
5                    Horses     3
6                    Horses     3


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy instrukcja WITH jest wykonywana raz na zapytanie, czy raz na wiersz?

  2. Przypadek w instrukcji Select

  3. Jak zachować obliczoną kolumnę GEOMETRIA lub GEOGRAPHY

  4. Pętla If w instrukcji „Then” instrukcji Case w SQL Server 2008

  5. Nieoczekiwane wyniki CTE