好贷网好贷款

sql 2005 里的row_number() over 怎么样在提取要求行的同时得到记录总数? 50fredrickhu]

发布时间:2016-12-3 14:52:35 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"sql 2005 里的row_number() over 怎么样在提取要求行的同时得到记录总数? 50fredrickhu]",主要涉及到sql 2005 里的row_number() over 怎么样在提取要求行的同时得到记录总数? 50fredrickhu]方面的内容,对于sql 2005 里的row_number() over 怎么样在提取要求行的同时得到记录总数? 50fredrickhu]感兴趣的同学可以参考一下。

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

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

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

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)   )  t WHERE RowNumber between 50 and 60

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

我顶

SELECT * FROM  (  SELECT SalesOrderID, OrderDate,        ROW_NUMBER() OVER (order by OrderDate) as RowNumber,count(1)        FROM Sales.SalesOrderHeader  )  WHERE RowNumber between 50 and 60

WITH T AS (SELECT SalesOrderID, OrderDate,ROW_NUMBER() OVER (order by OrderDate)as RowNumber FROM Sales.SalesOrderHeader) SELECT * FROM T LEFT OUTER JOIN (SELECT MAX(RowNumber) AS ROWCOUNT FROM T) AS TC ON SalesOrderID>0 WHERE RowNumber between 50 and 60; 因为CTE只能用一次,要多次使用的话只好用join,用了join从效率上来说和查询两次差不多。 只是个想法,不能解决你的问题。 抱歉。

不会,帮顶

select   max(RowNumber) as 'total_rownumber',* from  (  SELECT   SalesOrderID,   OrderDate,ROW_NUMBER()   OVER   (order   by   OrderDate)as   RowNumber    FROM   Sales.SalesOrderHeader    )tb

SELECT  *   FROM            (         SELECT  SalesOrderID                ,OrderDate                ,ROW_NUMBER() OVER (order by OrderDate)as RowNumber                ,@@ROWCOUNT AS MaxRowNumber           FROM  Sales.SalesOrderHeader            ) X  WHERE  RowNumber between 50 and 60 

引用 10 楼 xiaoliaoyun 的回复:SQL code ..... 上面的这个错了.想不到其他办法,下面有个笨办法 SELECT  SalesOrderID        ,OrderDate        ,ROW_NUMBER() OVER (order by OrderDate)as RowNumber        ,@@ROWCOUNT AS MaxRowNumber   INTO  #TEMP   FROM  Sales.SalesOrderHeader   SELECT  *,@@ROWCOUNT FROM #TEMP WHERE RowNumber between 50 and 60  DROP TABLE #TEMP 

Declare @1 Table(id int  Primary key,date datetime) Insert Into @1  Select 9,'20080101' Union All Select 2,'20080102' Union All Select 8,'20080103' Union All Select 4,'20080104' Union All Select 3,'20080105' Union All Select 1,'20080106' Union All Select 5,'20080107' Select id,row,Rows From (Select id,row=Row_number() Over(Order By date),Count(*) Over() As Rows From @1  ) As a Where row Between 3 And 6  /* id          row                  Rows ----------- -------------------- ----------- 8           3                    7 4           4                    7 3           5                    7 1           6                    7 */

不懂,up

ROW_NUMBER Over() 在Sql 2000里面有什么方式可以代替它吗?

SELECT *,@@rowcount FROM   (SELECT   SalesOrderID,   OrderDate,ROW_NUMBER()   OVER   (order   by   OrderDate)as   RowNumber   FROM   Sales.SalesOrderHeader   )   WHERE   RowNumber   between   50   and   60 

一直用sql server 2000 ,没想到还有row_number,以前在oracle中用过,呵呵,退伍了

上一篇:请教问题:SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错!! 20fredrickhu]
下一篇:SQL Server 2005中没了xp_makecab 这个存储过程? 20fredrickhu]

相关文章

相关评论