2012-02-05 12 views
18

このクエリ結果にROW番号を追加するにはどうすればよいですか?この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 

答えて

19

追加: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

トメク私はそれをどこに置く必要があるのですか? –

+0

@MarioM:私の編集を参照してください。 – Tomek

+0

クエリを試しましたが、このエラーが発生します。 メッセージ208、レベル16、状態1、行1 無効なオブジェクト名 'VehicleSpecs'。 [CarSpecs]。[dbo]。[VehicleSpecs] ...でも同じエラーが発生しました... –

18

ラップあなた全体のサブクエリ内のクエリと外部クエリでrow_numberを追加します。

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は空の 'over()'句を許可していませんか? –

+0

+1「DISTINCT」があることに気付かなかった。 –

+0

@a_horse_with_no_name - row_numberではありません。それは最大と最小のために行います。 –

関連する問題