2012-07-27 29 views
6

Có cách nào để chỉ định nhiều cột trong mệnh đề OVER ORDER BY không?Nhiều cột trong OVER ORDER BY

SELECT ROW_NUMBER() OVER(ORDER BY (A.Col1)) AS ID FROM MyTable A 

Các công trình trên tốt nhưng cố gắng thêm cột thứ hai không hoạt động.

SELECT ROW_NUMBER() OVER(ORDER BY (A.Col1, A.Col2)) AS ID FROM MyTable A 

Cú pháp sai gần ','.

Trả lời

12

Sự cố là dấu ngoặc đơn phụ xung quanh tên cột. Tất cả những điều này sẽ hoạt động:

-- The standard way 
SELECT ROW_NUMBER() OVER(ORDER BY A.Col1) AS ID FROM MyTable A 
SELECT ROW_NUMBER() OVER(ORDER BY A.Col1, A.Col2) AS ID FROM MyTable A 

-- Works, but unnecessary 
SELECT ROW_NUMBER() OVER(ORDER BY (A.Col1), (A.Col2)) AS ID FROM MyTable A 

Ngoài ra, khi bạn đặt câu hỏi SQL, bạn nên luôn chỉ định cơ sở dữ liệu nào bạn đang truy vấn.

0

Không có dấu ngoặc vuông.

SELECT ROW_NUMBER() OVER(ORDER BY A.Col1, A.Col2) AS ID FROM MyTable A 
-5

này không thể bạn có thể thấy cú pháp của Row_Num:

ROW_NUMBER () 
    OVER ([ PARTITION BY value_expression , ... [ n ] ] order_by_clause) 

nếu sử dụng để thêm bởi đệ trong nhóm của bạn có thể làm điều đó ..