Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

müssen ROW_NUMBER ohne over in sqlserver 2005 verwenden

Verwenden Sie mehrere ROW_NUMBER-Klauseln pro Spalte und wählen Sie die relevante aus:

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

ODER Verwenden Sie einen CASE-Ausdruck. Hinweis:Alle Datentypen müssen kompatibel sein

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

ODER Wenn Sie wirklich eine beliebige Zeilennummer wollen, dann tun Sie dies:

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