sql >> Databáze >  >> RDS >> Sqlserver

Chování serveru SQL Server ROW_NUMBER

Stačí přesunout WHERE klauzule k vnitřnímu dotazu.

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;

Nemáte přístup k RowNum alias ve vnější verzi dotazu, protože alias zatím neexistuje. SELECT je analyzován jako předposlední, před ORDER BY . WHERE je zpracován před SELECT .



  1. MySql, Postgres, Oracle a SQLServer ignorující filtr IS NOT NULL

  2. Přehled příkazu PRINT na serveru SQL

  3. vložit do databáze z duplicitního textového pole, pokud není prázdné php sql

  4. php mysql seskupit podle data ve formátu yyyy-mm-dd