MSSQL使用窗口函數查詢去重數據


USE ReportServer
GO

--DROP TABLE TB_Books

 

 1.創建表

1 CREATE TABLE TB_Books
2 (
3     FID INT IDENTITY(1,1) PRIMARY KEY
4     ,FName NVARCHAR(400) NOT NULL
5     ,FCategory NVARCHAR(40) NOT NULL
6     ,FCreateDate DATETIME NOT NULL
7 )

 

2. 創建初始化數據

 1 INSERT TB_Books
 2 VALUES
 3 ('AAA','bbb','2020-01-11')
 4 ,('flask','python','2020-02-11')
 5 ,('pandas','python','2020-03-11')
 6 ,('numpy','python','2020-02-21')
 7 ,('ASP.NET Core','.net','2020-02-01')
 8 ,('ASP.NET','.net','2010-02-11')
 9 ,('WPF','.net','2020-12-11')
10 ,('MSSQL','db','2020-5-11')
11 ,('MYSQL','db','2020-6-11')
12 ,('MONGODB','db','2020-07-11')

 

3. 查詢表數據

1 SELECT * FROM TB_Books;

顯示結果:

 

 4. 使用窗口函數分組,並取分組中第一條數據

 1 WITH T AS
 2 (
 3   SELECT 
 4     ROW_NUMBER() OVER(PARTITION BY FCategory ORDER BY FCreateDate DESC) AS A,
 5     ROW_NUMBER() OVER( ORDER BY FCreateDate DESC) AS B,
 6     TB.*
 7   FROM TB_Books AS TB
 8 )
 9 SELECT
10 
11   FName, A, B
12 
13 FROM T 
14   WHERE 
15   A=1 -- 按FCategory分組數據中,取第一條數據
16 -- AND
17 --  T.B BETWEEN 1 AND 20;

顯示結果:

 


免責聲明!

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



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