Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

precisa usar ROW_NUMBER sem over no sqlserver 2005


Use várias cláusulas ROW_NUMBER por coluna e escolha a relevante:
....
    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
....

OU use uma expressão CASE. Nota:todos os tipos de dados devem ser compatíveis
ROW_NUMBER() OVER (ORDER BY CASE @sort
                     WHEN 1 THEN [Column1]
                     WHEN 1 THEN [Column2]
                     WHEN 1 THEN [Column3]
                     ...
                   END

OU Se você realmente deseja um número de linha arbitrário, faça isso:
ROW_NUMBER() OVER (ORDER BY (SELECT 1)) as rn