zoukankan      html  css  js  c++  java
  • Sql Server Row_Number() 学习

    Row_Number():

    row_number()主要是为选出的每一条记录按照一定的排序方式生成一个行序号。

    语法:

    ROW_NUMBER ( ) OVER ( [ PARTITION BY value_expression , ... [ n ] ] order_by_clause )

    下面是学习row_number()的测试例子:

    CREATE TABLE #Test
    (
    TypeName VARCHAR(50),
    TestName VARCHAR(50),
    UpdateDate DATETIME
    )

    INSERT INTO #Test VALUES('Type1','Test1','2013-07-07')
    INSERT INTO #Test VALUES('Type1','Test1','2013-07-06')
    INSERT INTO #Test VALUES('Type1','Test1','2013-07-05')
    INSERT INTO #Test VALUES('Type2','Test1','2013-07-04')
    INSERT INTO #Test VALUES('Type2','Test1','2013-07-03')
    INSERT INTO #Test VALUES('Type2','Test1','2013-07-02')
    INSERT INTO #Test VALUES('Type2','Test1','2013-07-01')

     1.按时间升序排序返回#Test表的行号:

    SELECT ROW_NUMBER() OVER (ORDER BY UpdateDate) RowNumber,*
    FROM #Test

    结果集:

    1 Type2 Test1 2013-07-01 00:00:00.000
    2 Type2 Test1 2013-07-02 00:00:00.000
    3 Type2 Test1 2013-07-03 00:00:00.000
    4 Type2 Test1 2013-07-04 00:00:00.000
    5 Type1 Test1 2013-07-05 00:00:00.000
    6 Type1 Test1 2013-07-06 00:00:00.000
    7 Type1 Test1 2013-07-07 00:00:00.000

    2.以TypeName为分组 按时间排序:

    SELECT ROW_NUMBER() OVER (PARTITION BY TypeName ORDER BY UpdateDate) RowNumber,*
    FROM #Test

    结果集:

    1 Type1 Test1 2013-07-05 00:00:00.000
    2 Type1 Test1 2013-07-06 00:00:00.000
    3 Type1 Test1 2013-07-07 00:00:00.000
    1 Type2 Test1 2013-07-01 00:00:00.000
    2 Type2 Test1 2013-07-02 00:00:00.000
    3 Type2 Test1 2013-07-03 00:00:00.000
    4 Type2 Test1 2013-07-04 00:00:00.000

    3.找出按时间排序第三条到第六条的数据:

    ;WITH TestOrder AS
    (
    SELECT ROW_NUMBER() OVER (ORDER BY UpdateDate) RowNumber,*FROM #Test
    )
    SELECT * FROM TestOrder WHERE RowNumber BETWEEN 3 AND 6

    结果集:

    3 Type2 Test1 2013-07-03 00:00:00.000
    4 Type2 Test1 2013-07-04 00:00:00.000
    5 Type1 Test1 2013-07-05 00:00:00.000
    6 Type1 Test1 2013-07-06 00:00:00.000

    MSDN 学习地址http://msdn.microsoft.com/zh-cn/library/ms186734.aspx

  • 相关阅读:
    注册算法入门
    call传参之通过堆栈
    winhex注意
    输入字符串长度
    integer promotion
    网页flash兼容浏览器代码
    逆向工程——注册篇
    esp定律的一点说明
    base64
    意外
  • 原文地址:https://www.cnblogs.com/qianlixing/p/3176464.html
Copyright © 2011-2022 走看看