row_number
row_number函数是返回结果集分区内行的序列号,每个分区的第一行从 1 开始。
CREATE TABLE [dbo].[tb_Seller](
[编号] [nvarchar](50) NULL,
[商品名称] [nvarchar](50) NULL,
[销售额] [money] NULL,
[利润] [money] NULL,
[门店名称] [nvarchar](50) NULL,
[日期] [smalldatetime] NULL,
[销售员] [nvarchar](50) NULL
)
例如创建一个销售表,insert如下数据
1,按照销售额大小,加一个序号
select 编号,商品名称,销售额,利润,门店名称,日期,销售员,row_number() over (order by 销售额) as [序号]
from dbo.tb_Seller
2,返回特定的子集,例如我只要销售额第三名的
;with data as
(select 编号,商品名称,销售额,利润,门店名称,日期,销售员,row_number() over (order by 销售额) as [序号]
from dbo.tb_Seller)
select * from data where [序号]=3
3,还有一种在处理批量数据的时候,insert 了重复多余的数据,只是insert的时间不同,对于批量删除多余的数据就可以用到ROW_NUMBER,partition by。如下图,将该销售表的数据复制三分,只是时间不相同而已
用如下方法就可以很容易的删除掉多余的数据
--row_number() OVER (PARTITION BY COL1 ORDER BY COL2)
--表示根据COL1分组,在分组内部根据COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)
;with data as
(select 编号,row_number() over (partition by convert(varchar(10),日期,120) order by 销售额) as [序号]
from dbo.tb_Seller group by 编号,销售额,日期)
delete a from dbo.tb_Seller a inner join data b on a.[编号]=b.[编号] where [序号] in (2,3)
以下排序函数DENSE_RANK、RANK、NTILE 和row_number类似都可以和over结合使用,其它排序函数的用法可以以后详细了解下。over函数还可以和sum,max 等聚合函数一起使用,max() over(partition by ... order by ...):求分组后的最大值。大家可以在sql server 帮助,搜索中查找个函数的用法。
相关阅读
一、总结UpdateData()函数UpdateData(true);//用于将屏幕上控件中的数据交换到变量中。UpdateData(false);//用于将数据在屏幕中
目录 简介 Glide是面向Android的快速高效的开源媒体管理和图像加载框架,将媒体解码,内存和磁盘缓存以及资源池融合到一个简单
转自:http://blog.csdn.net/liyong199012/article/details/8948952 游标的概念: 游标是SQL的一个内存工作区,由系统或用户
定义了一个list,该list的数据类型是NameValuePair(简单名称值对节点类型),这个代码多处用于Java像url发送Post请求。在发送post请求时
先来讲一讲#define的优点与缺点: [优点] 当在程序中想要修改某一个值得时候,而且这个值又在很多地方引用。这时候就能体现出宏定