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

trzeba używać ROW_NUMBER bez over w sqlserver 2005

Użyj kilku klauzul ROW_NUMBER na kolumnę i wybierz odpowiednią:

....
    ROW_NUMBER() OVER (ORDER BY [Column1]) as rn1,
    ROW_NUMBER() OVER (ORDER BY [Column2]) as rn2,
    ROW_NUMBER() OVER (ORDER BY [Column3]) as rn3,
    ROW_NUMBER() OVER (ORDER BY [Column4]) as rn4
....

LUB użyj wyrażenia CASE. Uwaga:wszystkie typy danych muszą być kompatybilne

ROW_NUMBER() OVER (ORDER BY CASE @sort
                     WHEN 1 THEN [Column1]
                     WHEN 1 THEN [Column2]
                     WHEN 1 THEN [Column3]
                     ...
                   END

LUB Jeśli naprawdę potrzebujesz dowolnego numeru wiersza, zrób to:

ROW_NUMBER() OVER (ORDER BY (SELECT 1)) as rn


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać dane z ostatniego miesiąca i dane od początku miesiąca?

  2. SQL Server 2005:Wywołanie procedury składowanej z klauzuli WHERE

  3. UPSERT w SSIS

  4. USTAW zmienną wewnątrz CTE

  5. INSERT INTO @ nazwa_tabeli...EXEC nazwa_usp