1
SELECT [Column1] FROM VIEW1 WHERE ROW_NUMBER = 5;

エラーが発生します:

メッセージ 207、レベル 16、状態 1、行 2 列名 'ROW_NUMBER' が無効です。

理由について何か提案はありますか?ROW_NUMBER は自動的にピンクの色合いで色付けされます。これは、私の知識から「キーワード」を意味します-では、なぜ Sql Server はそれが列であるべきだと考え、列が存在しないと言うのですか?

前もって感謝します。

4

4 に答える 4

5

ROW_NUMBERこのコンテキストでは使用できません。WHERE句での使用例は次のROW_NUMBERとおりです。

USE AdventureWorks2012;
GO
WITH OrderedOrders AS
(
    SELECT SalesOrderID, OrderDate,
    ROW_NUMBER() OVER (ORDER BY OrderDate) AS RowNumber
    FROM Sales.SalesOrderHeader 
) 
SELECT SalesOrderID, OrderDate, RowNumber  
FROM OrderedOrders 
WHERE RowNumber BETWEEN 50 AND 60;

ソース: http: //msdn.microsoft.com/en-us/library/ms186734.aspx

于 2012-07-18T08:54:12.897 に答える
5

クエリの処理方法が間違っているため、

ROW_NUMBER 各パーティションの最初の行を 1 として、結果セットのパーティション内の行の連続番号を返します。

あなたが試すことができます

Select 
from 
(
        Select row_number() over (partition by x order by x)SrNo,* from x
)A
where A.SrNo=1
于 2012-07-18T08:59:45.953 に答える
1

そのようなROW_NUMBER()を使用することはできません

SELECT * FROM 
(
    SELECT [Column1], ROW_NUMBER() OVER(ORDER By [Column1] ASC) As Row
    FROM VIEW1
) x
WHERE Row = 5;
于 2012-07-18T08:58:21.907 に答える
0

ROW_NUMBER最初に定義する必要があります。これを試して...

SELECT [column1] FROM (
  SELECT
    ROW_NUMBER() OVER (ORDER BY key ASC) AS rownumber,
    [column1]
  FROM <tablename>
) AS xyz
WHERE rownumber = 5

例えば:

SELECT EmpName FROM (
  SELECT
    ROW_NUMBER() OVER (ORDER BY empId ASC) AS rownumber,
    EmpName
  FROM EmpMaster
) AS EmpTable
WHERE rownumber = 5

テーブルの代わりにビューを使用できます

于 2012-07-18T09:36:14.443 に答える