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

  • 相关阅读:
    整理Xen理论知识
    搭建Hadoop
    Java、中Date的格式初始化以及Calendar的使用
    学习Xen
    关于mpi的理论知识以及编写程序来实现数据积分中的梯形积分法。
    题解-CF1396C Monster Invaders
    题解-CF1139D Steps to One
    qq 表情库
    题解-洛谷P6788 「EZEC-3」四月樱花
    题解-CF1401E Divide Square
  • 原文地址:https://www.cnblogs.com/qianlixing/p/3176464.html
Copyright © 2011-2022 走看看