SELECT * FROM (SELECT SalesOrderID, OrderDate,ROW_NUMBER() OVER (order by OrderDate)as RowNumber FROM Sales.SalesOrderHeader ) WHERE RowNumber between 50 and 60比如这里,如何得知sales表的记录总数,或者说RowNumber的最大值?

解决方案 »

  1.   

    SELECT 

    FROM 
    (SELECT SalesOrderID, OrderDate,ROW_NUMBER() OVER (order by OrderDate)as RowNumber FROM Sales.SalesOrderHeader
    union all
    select '','',(select count(1) from Sales.SalesOrderHeader)   ) 
    WHERE RowNumber between 50 and 60
      

  2.   

    --RowNumber 最大值
    select max(RowNumber)
    from
    (
    SELECT SalesOrderID, OrderDate,ROW_NUMBER() OVER (order by OrderDate)as RowNumber 
    FROM Sales.SalesOrderHeader 
    )tb
      

  3.   

    jacobsan的方法用了两句分别查询,这样的话造成了系统资源的浪费zlp321002的方法只能得到max(RowNumber),而没有SalesOrderID, OrderDate的记录集,与这样查询的初衷相违,如果用select SalesOrderID, OrderDate, max(RowNumber)又会出错继续求解...