select *
from
  (select row number() over (order by UnitPrice) as PriceRank,* from books) as Rank
where PriceRank between 21 and 30
order by UnitPrice
各位,这和函数怎么理解啊?
这句话完全看不懂啊

解决方案 »

  1.   

    你的写错了吧?declare @t table(id int)
    insert into @t
    select 1 union all
    select 4select ROW_NUMBER() over(order by id desc) as rownum,id from @t
    /*
    rownum               id
    -------------------- -----------
    1                    4
    2                    1
    */
      

  2.   

    ROW_NUMBER()是有下划线的。
    表示把某列排序后的行号。
    over后面的括号里面表示排序的字段。例如我上面的例子
    按id倒序,第一行应该是4,第二行应该是1。
    前面的就是排序后出来的行号ROW_NUMBER() over(order by id desc)
      

  3.   

    那 
    (select row_number() over (order by UnitPrice) as PriceRank,* from books) as Rank
    后面部分怎么理解啊?
    我是新手,谢谢你
      

  4.   

    后面的as rank什么解释啊?
      

  5.   

    as 列名select 1+1 as rank
      

  6.   

    把查询结果做为一张表,表名命名为rank.语法: select * from tb as rank
      

  7.   

    每天多明白一点,积少成多,时间长了就好了。急不得的,呵呵。
    建议LZ看一下row_number()的帮助,把主要部分记住。