10

OVER ORDER BY 句で複数の列を指定する方法はありますか?

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

上記は正常に機能しますが、2 番目の列を追加しようとしても機能しません。

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

「,」付近の構文が正しくありません。

4

2 に答える 2

25

問題は、列名を囲む余分な括弧です。これらはすべて動作するはずです:

-- 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 に関する質問をするときは、クエリの対象となるデータベースを常に指定する必要があります。

于 2012-07-27T15:35:59.170 に答える
2

ブラケットなし。

SELECT ROW_NUMBER() OVER(ORDER BY A.Col1, A.Col2) AS ID FROM MyTable A 
于 2012-07-27T15:36:13.507 に答える