zoukankan      html  css  js  c++  java
  • ROW_NUMBER用法详解

    ROW_NUMBER用法详解

    语法格式:row_number() over(partition by 分组列 order by 排序列 desc)

    分组列和排序列都可以多个字段组合

    row_number() over()分组排序功能:

    使用 row_number() over()函数时,over()里头的分组以及排序的执行晚于 where 、group by、 order by 的执行。

    1. row_number() over()
    使用时排序字段放在over(ORDER BY 字段)里面,查询记录按排序字段升成序号升序输出。
    注意事项:用了over排序后,sql语句后面不用再写Order BY子句排序。如果再写Order by子句,记录会按后面的Order by子句排序输出,记录排序不会按row_number产生的序号排序。

    2. ROW_NUMBER() OVER PARTITION BY

    使用 ROW_NUMBER() OVER(PARTITION BY 字段1 ORDER BY 字段2 Asc) 语句,按OVER里的字段1进行分组,然后按OVER里的order BY 字段2 进行组内排序,每组都是从1开始。
    这时可根据需要在后面写另一个order BY 子句,记录排序按这个子句排序输出,跟ROW_NUMBER方法产生的序号无关。

    示例

    CREATE TABLE #temp_data(
    id BIGINT PRIMARY KEY IDENTITY,
    name NVARCHAR(50),
    category INT,--分类id
    sort_id INT,--排序id
    addtime DATETIME
    )

    INSERT INTO #temp_data ( name,category,sort_id, addtime )VALUES ( '水果11', 1, 1,GETDATE());
    INSERT INTO #temp_data ( name,category,sort_id, addtime )VALUES ( '水果12', 1, 2,GETDATE());
    INSERT INTO #temp_data ( name,category,sort_id, addtime )VALUES ( '水果23', 2, 3,GETDATE());
    INSERT INTO #temp_data ( name,category,sort_id, addtime )VALUES ( '水果24', 2, 4,GETDATE());
    --SELECT * FROM #temp_data
    --ROW_NUMBER() OVER
    SELECT *,(ROW_NUMBER() OVER(ORDER BY category DESC,d.sort_id Asc)) as r_index

    FROM #temp_data d
    --ORDER BY id --如果再写Order by子句,记录会按后面的Order by子句排序

    --ROW_NUMBER() OVER PARTITION BY 记录按后面的order BY 子句排序输出,跟ROW_NUMBER方法产生的序号无关。
    SELECT (ROW_NUMBER() OVER(PARTITION BY d.category ORDER BY d.sort_id Asc)) as r_index,*

    FROM #temp_data d ORDER BY category,r_index


    DROP TABLE #temp_data

  • 相关阅读:
    VS2010调用外部webservice
    VS2013如何调用别人发布的WebService程序
    VS2010 根据WSDL文件(java Web Service)生成.cs文件
    vs2010 创建和发布 webservice
    CXF+Spring+Tomcat 案例
    LDAP方式连接AD获取用户信息
    webService和RMI
    当spring抛出异常时出现的页面的@ExceptionHandler(RuntimeException.class) 用法
    eclips中maven解决jsp报错的问题
    用idea搭建一个简单的SSM的Demo
  • 原文地址:https://www.cnblogs.com/059212315/p/13998901.html
Copyright © 2011-2022 走看看