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

Zachowanie SQL Server ROW_NUMBER

Wystarczy przenieść WHERE klauzula do wewnętrznego zapytania.

SELECT TeacherID, UniversityID, RowNum FROM
(
    SELECT a.TeacherID, a.UniversityID, ROW_NUMBER() OVER 
     (ORDER BY a.TeacherID) AS RowNum FROM SelectAll a
     LEFT JOIN mp_Ratings r 
     ON a.TeacherID = r.TeacherID 
     WHERE UniversityID = 2
     GROUP BY a.TeacherID, a.UniversityID
) as TeacherInfo WHERE RowNum BETWEEN 10 AND 50;

Nie masz dostępu do RowNum alias w zewnętrznej wersji zapytania, ponieważ alias jeszcze nie istnieje. SELECT jest analizowany jako przedostatni, przed ORDER BY . WHERE jest przetwarzany przed SELECT .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Maksymalny rozmiar wiersza 8060 Błąd

  2. Nierówne <> !=operator na NULL

  3. Jak uzyskać wartość pola wyboru z widoku siatki, gdy pole wyboru OnCheckedChanged

  4. Jak używać tego samego harmonogramu dla wielu zadań agenta programu SQL Server (T-SQL)

  5. Jak zaktualizować z SELECT w SQL Server?