关于ROW_NUMBER函数的使用(The use of ROW_NUMBER function )
1、用于删除重复记录(The use of to delete the common record)
例子:(Example)
#1初始化数据(Initialize the data)
CREATE TABLE #tmp1 ( id int, name nvarchar(20), age int );
INSERT INTO #tmp1 VALUES(1,'CangoWu',25)
INSERT INTO #tmp1 VALUES(2,'CangoWu',25)
INSERT INTO #tmp1 VALUES(3,'CangoWu',25)
INSERT INTO #tmp1 VALUES(4,'Ajay',29)
INSERT INTO #tmp1 VALUES(5,'Ajay',29)
INSERT INTO #tmp1 VALUES(6,'Ajay',29)
#2操作SQL(T-SQL)
--操作前(Before the operation)
SELECT * FROM #tmp1
id name age
1 CangoWu 25
2 CangoWu 25
3 CangoWu 25
4 Ajay 29
5 Ajay 29
6 Ajay 29
--操作后(After the operation)
SELECT name,age FROM
(
SELECT *,ROW_NUMBER() OVER(PARTITION BY name ORDER BY id) row FROM #tmp1
)tmp
WHERE row = 1
name age
Ajay 29
CangoWu 25
2、记录相同字段不重复显示(The record fields repeat same display)
例子:(Example)
#1初始化数据(Initialize the data)
CREATE TABLE #tmp2 ( id int, name nvarchar(20), age int, month int, salary int );
INSERT INTO #tmp2 VALUES(1,'CangoWu',25,1,2500)
INSERT INTO #tmp2 VALUES(2,'CangoWu',25,2,2500)
INSERT INTO #tmp2 VALUES(3,'CangoWu',25,3,2500)
INSERT INTO #tmp2 VALUES(4,'CangoWu',25,4,2500)
INSERT INTO #tmp2 VALUES(5,'CangoWu',25,5,2500)
INSERT INTO #tmp2 VALUES(6,'CangoWu',25,6,2500)
INSERT INTO #tmp2 VALUES(11,'Preston',35,1,8000)
INSERT INTO #tmp2 VALUES(12,'Preston',35,2,8000)
INSERT INTO #tmp2 VALUES(13,'Preston',35,3,8000)
INSERT INTO #tmp2 VALUES(14,'Preston',35,4,8000)
INSERT INTO #tmp2 VALUES(15,'Preston',35,5,8000)
INSERT INTO #tmp2 VALUES(16,'Preston',35,6,8000)
INSERT INTO #tmp2 VALUES(21,'Ajay',29,1,5000)
INSERT INTO #tmp2 VALUES(22,'Ajay',29,2,5000)
INSERT INTO #tmp2 VALUES(23,'Ajay',29,3,5000)
INSERT INTO #tmp2 VALUES(24,'Ajay',29,4,5000)
INSERT INTO #tmp2 VALUES(25,'Ajay',29,5,5000)
INSERT INTO #tmp2 VALUES(26,'Ajay',29,6,5000)
#2操作SQL(T-SQL)
SELECT
name = (CASE WHEN row = 1 THEN name ELSE '' END)
,age = (CASE WHEN row = 1 THEN age ELSE NULL END)
,month
,salary
FROM
(
SELECT *,ROW_NUMBER() OVER(PARTITION BY name ORDER BY id) row FROM #tmp2
)tmp
name age month salary
Ajay 29 1 5000
2 5000
3 5000
4 5000
5 5000
6 5000
CangoWu 25 1 2500
2 2500
3 2500
4 2500
5 2500
6 2500
Preston 35 1 8000
2 8000
3 8000
4 8000
5 8000
6 8000
关于ROW_NUMBER函数的使用(The use of ROW_NUMBER function )的更多相关文章
- 【转载】Sqlserver数据库中无自增Id的情况下使用ROW_NUMBER()函数进行数据分页
在Sqlserver数据库中,如果查询表中含有自增长Id列,一般会采用select Top的方式来数据的分页操作.而实际上很多数据表设计的时候,不一定含有自增长Id列,那么数据库没有Id自增列的时候要 ...
- row_number函数的使用
转 row_number函数的使用 SQL Server数据库ROW_NUMBER()函数的使用是本文我们要介绍的内容,接下来我们就通过几个实例来一一介绍ROW_NUMBER()函数的使用. 实例如下 ...
- SQL Server中row_number函数的简单用法
一.SQL Server Row_number函数简介 ROW_NUMBER()是一个Window函数,它为结果集的分区中的每一行分配一个连续的整数. 行号以每个分区中第一行的行号开头. 以下是R ...
- ROW_NUMBER()函数的使用
SQL Server数据库ROW_NUMBER()函数的使用是本文我们要介绍的内容,接下来我们就通过几个实例来一一介绍ROW_NUMBER()函数的使用. 实例如下: .使用row_number()函 ...
- SQL Server数据库ROW_NUMBER()函数使用详解
SQL Server数据库ROW_NUMBER()函数使用详解 摘自:http://database.51cto.com/art/201108/283399.htm SQL Server数据库ROW_ ...
- Teradata 的rank() 和 row_number() 函数
Teradata数据库中也有和oracle类似的分析函数,功能基本一样.示例如下: RANK() 函数 SELECT * FROM salestbl ORDER BY 1,2; storeid p ...
- T-SQL利用Row_Number函数实现分页
SQL: CREATE PROCEDURE PagingViewTest ( @currentPageIndex INT, --页序号 @pageSize INT, --页大小 @pageCount ...
- 【ROW_NUMBER 函数(Transact-SQL)】
[ROW_NUMBER 函数(Transact-SQL)]返回结果集分区内行的序列号,每个分区的第一行从 1 开始. 注释: ROW_NUMBER() OVER (PARTITION BY COL1 ...
- 按某个字段来分组、编号的row_number()函数
本文参考 http://zhidao.baidu.com/link?url=8su4F16Et8Q0S3FmybwniJSI51Ms0AeVujcEXhyEaZh3u5LlOng5Xri_9zHsl7 ...
随机推荐
- Nvidia显卡怎样查看显存大小及硬件相关信息
在电脑上安装Nvidia显卡驱动,平时也会通过Nvidia控制面板来查看显示显存位宽及宽带.显示显存容量和显示显存芯片信息等等,那么该如何查看Nvidia显存大小以及Nvidia硬件相关信息呢? 1. ...
- linux常用命令(5)rmdir命令
rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的.(注意,rm - r dir命令可代替rmdir,但是有很大危险性.)删除某目录时也必须具有对父目录的写权限.1.命令格 ...
- 探讨VMP 2.12.3 导入表修复
壳版本:VMProtect.Ultimate.2.12.3 样本:notepad.exe 目的:IAT修复 作者:MrWrong 标题:探讨VMP 2.12.3 导入表修复 只是感兴趣,没有其他目的. ...
- LeetCode _ Copy List with Random Pointer
A linked list is given such that each node contains an additional random pointer which could point t ...
- Altium Designer 画"差分线"
如何在 Altium Designer 中快速进行差分对走线1:在原理图中让一对网络前缀相同,后缀分别为_N 和_P,并且加上差分队对指示. 让一对差分网络名称的前缀必须相同,后缀分别为_N 和 ...
- post 相比get 有很多优点,为什么现在的HTTP通信中大多数请求还是使用get?
好吧, 除了哲学方式的回答以外,下面是一个浏览器从业人员的看法 事实上GET 和 POST 在实践上面有非常大的区别,这两种方法在语义上面并非能互相取代. POST 是否比 GET 安全 是的, PO ...
- ffdshow 源代码分析1 : 整体结构
ffdshow是一个非常强大的DirectShow解码器,封装了ffmpeg,libmpeg2等解码库.它也提供了丰富的加工处理选项,可以锐化画面,调节画面的亮度等等.不止是视频,FFDShow现在同 ...
- 8.2.1.10 Nested-Loop Join Algorithms 嵌套循环 关联算法:
8.2.1.10 Nested-Loop Join Algorithms 嵌套循环 关联算法: MySQL 执行关联在表之间使用一个嵌套循环算法或者变种 Nested-Loop Join Algori ...
- BZOJ3390: [Usaco2004 Dec]Bad Cowtractors牛的报复
3390: [Usaco2004 Dec]Bad Cowtractors牛的报复 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 43 Solved: ...
- mysql中文名字按首字母排序
在mysql数据库中可以使用GBK编码对中文进行排序,如名字按首字母排序 order by convert(substr(tu.username,1,1) using 'GBK') 其中substr方 ...