【问题标题】:ROW_NUMBER errorROW_NUMBER 错误
【发布时间】:2012-07-17 06:23:34
【问题描述】:
SELECT [Column1] FROM VIEW1 WHERE ROW_NUMBER = 5;

给出一个错误:

消息 207,级别 16,状态 1,第 2 行无效的列名称“ROW_NUMBER”。

关于原因有什么建议吗? ROW_NUMBER 自动以粉红色着色,这意味着据我所知“关键字” - 那么为什么 Sql Server 认为它应该是一个列并说该列不存在?

提前谢谢你。

【问题讨论】:

    标签: sql sql-server-2008


    【解决方案1】:

    你处理查询的方式是错误的,因为

    ROW_NUMBER 返回序列号 结果集的分区内的一行, 每个分区的第一行从 1 开始。

    你可以试试

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

    【讨论】:

      【解决方案2】:

      您不能在这种情况下使用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

      【讨论】:

        【解决方案3】:

        你不能这样使用 ROW_NUMBER()

        SELECT * FROM 
        (
            SELECT [Column1], ROW_NUMBER() OVER(ORDER By [Column1] ASC) As Row
            FROM VIEW1
        ) x
        WHERE Row = 5;
        

        【讨论】:

          【解决方案4】:

          你必须先定义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
          

          你可以用View代替Table

          【讨论】:

            猜你喜欢
            • 2015-08-27
            • 2016-02-09
            • 2018-10-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-03-15
            • 2022-01-12
            • 1970-01-01
            相关资源
            最近更新 更多