sqlserver记录去重

   
  INSERT INTO [employee] select 2
      ,[emp_name]
      ,[gender]
      ,[department]
      ,[salary]
   from  [employee]

select * from 
  (  select ROW_NUMBER() over(partition by emp_id order by emp_id) empid ,* from [employee]) as tb
  where tb.empid=1
 
delete tb from   
(select ROW_NUMBER() over(partition by emp_id order by emp_id) empid,*from employee)  as tb
where tb.empid>1

select * from employee

上面就是开窗函数例子,开窗函数是在 ISO 标准中定义的。SQL Server 提供排名开窗函数和聚合开窗函数。

  在开窗函数出现之前存在着很多用 SQL 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成。SQL Server 2005 引入了开窗函数,使得这些经典的难题可以被轻松的解决。

  窗口是用户指定的一组行。开窗函数计算从窗口派生的结果集中各行的值。开窗函数分别应用于每个分区,并为每个分区重新启动计算。

  OVER 子句用于确定在应用关联的开窗函数之前,行集的分区和排序。PARTITION BY 将结果集分为多个分区。

posted @ 2019-01-20 19:35  1936xinyang  阅读(2094)  评论(0)    收藏  举报