2012-02-05 31 views
18

Làm cách nào để thêm số ROW vào kết quả truy vấn này?Thêm số hàng vào truy vấn T-SQL này

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 

Trả lời

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 Tôi không hiểu nơi nào trong truy vấn tôi phải đặt điều đó? –

+0

@MarioM: Xem chỉnh sửa của tôi. – Tomek

+0

Tôi đã thử truy vấn của bạn nhưng tôi nhận được lỗi này: Msg 208, Cấp 16, Tiểu bang 1, Dòng 1 Tên đối tượng không hợp lệ 'VehicleSpecs'. Tôi cũng đã thử với [CarSpecs]. [Dbo]. [VehicleSpecs] ... nhưng tôi gặp lỗi tương tự ... –

18

Bọc bạn toàn bộ truy vấn trong một truy vấn phụ và thêm row_number trong truy vấn bên ngoài.

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 có không cho phép một mệnh đề 'over()' trống không? –

+0

+1 Đã không nhận thấy có một 'DISTINCT'. –

+0

@a_horse_with_no_name - Không cho hàng số. Nó cho tối đa và min. –

Các vấn đề liên quan