2012-02-05 12 views
18

Come posso aggiungere i numeri ROW a questo risultato di query?Aggiungere il numero di riga a questa query 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 

risposta

19

Add: 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 Non capisco dove nella query devo metterlo? –

+0

@MarioM: vedere la mia modifica. – Tomek

+0

Ho provato la tua richiesta ma ottengo questo errore: Msg 208, livello 16, stato 1, riga 1 Nome oggetto non valido 'VehicleSpecs'. Ho anche provato con [CarSpecs]. [Dbo]. [VehicleSpecs] ... ma ottengo lo stesso errore ... –

18

avvolgerà tutta la query in una query sub e aggiungere row_number nella query esterna.

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 non consente una clausola 'over()' vuota? –

+0

+1 Non avevo notato che c'era un 'DISTINCT'. –

+0

@a_horse_with_no_name - Non per row_number. Lo fa per max e min. –

Problemi correlati