2012-07-18 94 views
1
SELECT [Column1] FROM VIEW1 WHERE ROW_NUMBER = 5; 

給出了一個錯誤:ROW_NUMBER錯誤

Msg 207, Level 16, State 1, Line 2 Invalid column name 'ROW_NUMBER'.

任何建議,爲什麼? ROW_NUMBER會自動着色爲粉紅色,這意味着從我的知識「關鍵字」 - 這意味着爲什麼Sql Server認爲它應該是一列,並說該列不存在?

預先感謝您。

回答

5

你處理的方式查詢是錯誤的,因爲

ROW_NUMBER返回序列號 結果集的分區內的行, 從1開始,用於每個分區中的第一行。

您可以嘗試

Select 
from 
(
     Select row_number() over (partition by x order by x)SrNo,* from x 
)A 
where A.SrNo=1 
+1

好一個空也.. – Ambrose 2012-07-20 07:49:49

5

在這種情況下,您不能使用ROW_NUMBER。在使用ROW_NUMBER的例子WHERE子句可以在這裏看到:

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

1

不能使用ROW_NUMBER()這樣的

SELECT * FROM 
(
    SELECT [Column1], ROW_NUMBER() OVER(ORDER By [Column1] ASC) As Row 
    FROM VIEW1 
) x 
WHERE Row = 5; 
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 

您可以使用查看而不是