2012-07-27 80 views
6

有多个列在OVER ORDER BY子句中是否有指定多个列的方法?OVER ORDER BY

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 

附近有语法错误 ''。

回答

12

问题是围绕列名称的额外括号。这些都应该工作:

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

此外,当您问一个SQL问题时,您应该始终指定您查询哪个数据库。

0

没有括号。

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

这是不可能的Row_Num 你可以看到语法:

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

如果使用额外的顺序由申请在GROUP BY你可以做到这一点..