2012-02-05 21 views
18

ROW numaralarını bu sorgu sonucuna nasıl ekleyebilirim?Bu T-SQL sorgusuna satır numarası ekleyin

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 

cevap

19

Ekleme: ROW_NUMBER() OVER (ORDER BY NumCars)

DÜZENLEME:

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 Sorgulamada nereye koymamız gerektiğini anlamıyorum. –

+0

@MarioM: Düzenlememe bakın. – Tomek

+0

Sorgunuzu denedim ancak şu hatayı alıyorum: Msg 208, Düzey 16, Durum 1, Satır 1 Geçersiz nesne adı 'VehicleSpecs'. Ayrıca [CarSpecs] ile çalıştım. [Dbo]. [VehicleSpecs] ... ama aynı hatayı alıyorum ... –

18

Wrap tamamını alt sorguda sorgu ve dış sorguda row_number ekleyin.

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 boş bir 'over()' yan tümcesine izin vermiyor mu? –

+0

+1 Bir "DISTINCT" olduğunu fark etmemiştim. –

+0

@a_horse_with_no_name - row_number için değil. Maksimum ve min. –

İlgili konular