2012-02-05 14 views
18

¿Cómo puedo agregar números de ROW a este resultado de la consulta?Agregar número de fila a esta consulta T-SQL

SELECT DISTINCT 
    VehicleSpecs.SubmittedById, 
    COUNT(VehicleSpecs.SubmittedById) AS NumCars, 
    aspnet_Users.UserName 
FROM 
    VehicleSpecs 
    INNER JOIN aspnet_Users ON VehicleSpecs.SubmittedById = aspnet_Users.UserId 
WHERE 
    (LEN(VehicleSpecs.SubmittedById) > 0) 
GROUP BY 
    VehicleSpecs.SubmittedById, 
    aspnet_Users.UserName 
ORDER BY 
    NumCars DESC 

Respuesta

19

Añadir: ROW_NUMBER() OVER (ORDER BY NumCars)

EDIT:

WITH t1 AS 
(SELECT DISTINCT 
      VehicleSpecs.SubmittedById , 
      COUNT(VehicleSpecs.SubmittedById) AS NumCars , 
      aspnet_Users.UserName 
    FROM  VehicleSpecs 
      INNER JOIN aspnet_Users ON VehicleSpecs.SubmittedById = aspnet_Users.UserId 
    WHERE (LEN(VehicleSpecs.SubmittedById) > 0) 
    GROUP BY VehicleSpecs.SubmittedById , 
      aspnet_Users.UserName 
) 
SELECT ROW_NUMBER() OVER (ORDER BY NumCars), * 
FROM t1 
ORDER BY NumCars 
+0

Tomek No entiendo en qué parte de la consulta tengo que poner eso? –

+0

@MarioM: Ver mi edición. – Tomek

+0

He intentado su consulta, pero aparece este error: Msg 208, nivel 16, estado 1, línea 1 Nombre del objeto no válido 'VehicleSpecs'. También he intentado con [CarSpecs]. [Dbo]. [VehicleSpecs] ... pero obtengo el mismo error ... –

18

Wrap que consulta completa en una consulta sub y añadir row_number en la consulta externa.

select *, row_number() over(order by (select 0)) as rn 
from 
    (
    select distinct -- your columns 
    from YourTable 
) as T 
order by NumCars desc 
+0

¿MS SQL no permite una cláusula 'over()' vacía? –

+0

+1 No había notado que había un 'DISTINCT'. –

+0

@a_horse_with_no_name - No para row_number. Lo hace para max y min. –

Cuestiones relacionadas