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 將結果集分為多個分區。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM