发 帖  
原厂入驻New
[问答]

一文知道MSSQL使用窗口函数查询去重数据

46 MSSQL
分享
USE ReportServer
GO
--DROP TABLE TB_Books

-- 创建表
CREATE TABLE TB_Books
(
        FID INT IDENtiTY(1,1) PRIMARY KEY
        ,FName NVARCHAR(400) NOT NULL
        ,FCategory NVARCHAR(40) NOT NULL
        ,FCreateDate DATETIME NOT NULL
)


0
2020-11-4 09:49:13   评论 分享淘帖 邀请回答
1个回答
创建初始化数据


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

查询表数据

SELECT * FROM TB_Books;




使用窗口函数分组,并取分组中第一条数据

WITH T AS
(
  SELECT
    ROW_NUMBER() OVER(PARTITION BY FCategory ORDER BY FCreateDate DESC) AS A,
    ROW_NUMBER() OVER( ORDER BY FCreateDate DESC) AS B,
    TB.*
  FROM TB_Books AS TB
)
SELECT
  FName, A, B
FROM T
  WHERE
           A=1  -- 按FCategory分组数据中,取第一条数据
-- AND
        --  T.B BETWEEN 1 AND 20;

2020-11-4 14:40:00 评论

举报

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
我要提问
关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表