Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

трябва да използвате ROW_NUMBER без над в sqlserver 2005

Използвайте няколко ROW_NUMBER клаузи на колона и изберете подходящата:

....
    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
....

ИЛИ използвайте CASE израз. Забележка:всички типове данни трябва да са съвместими

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

ИЛИ Ако наистина искате произволен номер на ред, направете следното:

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. Подготвеният оператор не може да се изпълнява многократно с целочислени стойности

  2. Индекс на SQL Server Кое трябва да бъде групирано?

  3. Локатор на редове в неклъстерен индекс

  4. Трябва ли да използвам тип данни SQL_Variant?

  5. 2 начина да видите дали остарелите функции все още се използват в екземпляр на SQL сървър