2012-02-05 52 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)

編輯:在一個子查詢

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我不明白在哪裏查詢我必須這樣做? – 2012-02-05 17:02:48

+0

@MarioM:看我的編輯。 – Tomek 2012-02-05 17:13:34

+0

我試過了您的查詢,但我收到此錯誤: 消息208,級別16,狀態1,行1 無效的對象名稱'VehicleSpecs'。 我也試過用[CarSpecs]。[dbo]。[VehicleSpecs] ...但是我得到了同樣的錯誤... – 2012-02-05 17:41:51

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()'子句? – 2012-02-05 15:45:11

+0

+1沒有注意到有一個'DISTINCT'。 – 2012-02-05 15:45:40

+0

@a_horse_with_no_name - 不適用於row_number。它適用於最大值和最小值。 – 2012-02-05 15:47:37