2012-07-27 8 views
6

Gibt es eine Möglichkeit, mehrere Spalten in der OVER ORDER BY-Klausel anzugeben?Mehrere Spalten in OVER ORDER BY

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

Das obige funktioniert gut, aber der Versuch, eine zweite Spalte hinzuzufügen, funktioniert nicht.

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

falsche Syntax in der Nähe ''.

Antwort

12

Das Problem sind die zusätzlichen Klammern um den Spaltennamen. Diese sollten alle Arbeiten:

-- 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 

Auch, wenn Sie eine SQL-Frage stellen, sollten Sie immer angeben, welche Datenbank Sie abfragen gegen.

0

Keine Klammern.

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

dies nicht möglich Sie sehen Syntax von Row_Num kann:

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

wenn Gebrauch Extraauftrag in Gruppe eingereicht durch die von Ihnen es

.. tun kann
Verwandte Themen