使用CTE,ROW_NUMBER,PARTITION BY来处理数据表重复记录。

先准备下面的数据:

IF OBJECT_ID('tempdb.dbo.#Part') IS NOT NULL DROP TABLE #Part

CREATE TABLE #Part (
[ID] INT,
[Item] NVARCHAR(40),
[Category] NVARCHAR(25),
[Qty] DECIMAL(18,2)
)
GO
INSERT INTO #Part ([ID],[Item],[Category],[Qty]) VALUES (23394,'I32-GG443-QT0098-0001','S',423.65),
(45008,'I38-AA321-WS0098-0506','B',470.87),
(14350,'K38-12321-5456UD-3493','B',200.28),
(64582,'872-RTDE3-Q459PW-2323','T',452.44),
(23545,'098-SSSS1-WS0098-5526','S',500.00),
(80075,'B78-F1H2Y-5456UD-2530','T',115.06),
(53567,'PO0-7G7G7-JJY098-0077','Q',871.33),
(44349,'54F-ART43-6545NN-2514','S',934.39),
(36574,'X3C-SDEWE-3ER808-8764','Q',607.88),
(36574,'RVC-43ASE-H43QWW-9753','U',555.19),
(14350,'K38-12321-5456UD-3493','B',200.28),
(64582,'872-RTDE3-Q459PW-2323','T',452.44),
(80075,'B78-F1H2Y-5456UD-2530','T',115.06),
(53567,'PO0-7G7G7-JJY098-0077','Q',871.33),
(44349,'54F-ART43-6545NN-2514','S',934.39),
(44349,'54F-ART43-6545NN-2514','S',934.39),
(36574,'X3C-SDEWE-3ER808-8764','Q',607.88)
GO

Source Code

处理,并执行把重复行删除。

;WITH Duplicate_Records AS
(
SELECT [ID],
[Item],
[Category],
[Qty],
ROW_NUMBER() OVER (
PARTITION BY [ID],
[Item],
[Category],
[Qty]
ORDER BY [ID]
) AS [row_num]
FROM #Part
)
DELETE FROM Duplicate_Records WHERE [row_num] > 1;

Source Code

接下来,运行下面的SQL,可见得复记录删除,相同的记录仅留下一笔:

删除重复Row记录数据的更多相关文章

  1. ROWID的使用——快速删除重复的记录

    ROWID是数据的详细地址,通过rowid,oracle可以快速的定位某行具体的数据的位置.ROWID可以分为物理rowid和逻辑rowid两种.普通的表中的rowid是物理rowid,索引组织表(I ...

  2. SqlServer中怎么删除重复的记录(表中没有id)

    SqlServer中怎么删除重复的记录(表中没有id) 其实我在别的网址也查到过删除重复的记录,不知道我是我SqlServer2012版本太低还是啥原因 delete from scwhere (c# ...

  3. SQL删除重复的记录(只保留一条)

    首先新建表: --创建示例表 CREATE TABLE t ( id ,) PRIMARY KEY, a ), b ) ) --插入数据 INSERT INTO t SELECT 'aa','bb' ...

  4. Oracle 删除重复的记录,只保留一条

    查询及删除重复记录的SQL语句   1.查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断   select * from 表 where Id in (select Id from 表 g ...

  5. SQL 中如何删除重复(每列数据都重复)的记录,只保留一行?

    如果数据表没有做好约束,那么数据库中难免会遇到数据重复的情况.今天就遇到这么个看起来简单却又费神的问题---如何去重. ------期间感谢微信公众号"有关SQL"的博主大牛提供的 ...

  6. 利用ROW_NUMBER中的partition by 删除重复Key的数据

    With temp As ( Select ROW_NUMBER() over(partition by LogisticsPlan order by createon) rowID,ID from ...

  7. sql删除重复的记录保留一条

    delete from A_TO_NOW where yuan_name in (select   yuan_name from A_TO_NOW group by   yuan_name   hav ...

  8. mysql 数据表中查找、删除重复记录

    为了性能考虑,在阅读之前提醒大家,如果有子查询,子查询查询到的数据最好不要超过总数据量的30%. 查询有重复数据的记录 select * from F group by a,b,c,d having ...

  9. oracle_SQL 实验查询及删除重复记录 依据条件 (row)

    除数据库表中的重复记录 根据条件 ① 创建表准备数据 创建表 tab_test -- Create table create table TAB_TEST ( ID NUMBER, NAME NVAR ...

随机推荐

  1. VirtualBox创建VM结果ProcessorType是空的

    用WMI来查询CPU的频率,一直没问题: "Select MaxClockSpeed From Win32_Processor Where ProcessorType = 3" 结 ...

  2. linux install beanstalkd

    you can instal it via git and then copy systemd script: Step 0. Install git yum install git Step 1. ...

  3. Mysql 外键级联

    如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表.外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常 ...

  4. 采集练习(十一) php 获得电视节目预告---数据来自电视猫

    昨天写了个采集搜视网的电视节目预告,刚好今天有心情,想采下其他网站提供的节目预告,发现  电视猫wap版 的提供的节目预告也蛮好采(需要正则)....感谢移动互联网! 电视猫的 wap版地址是 htt ...

  5. 微信小程序开发:学习笔记[5]——JavaScript脚本

    微信小程序开发:学习笔记[5]——JavaScript脚本 快速开始 介绍 小程序的主要开发语言是 JavaScript ,开发者使用 JavaScript 来开发业务逻辑以及调用小程序的 API 来 ...

  6. Flask中的CBV和上下文初步解读

    一 . flask中的CBV 相对于Django中的CBV,让我们来看看flask中的CBV是如何实现的 ? from flask import Flask, render_template, url ...

  7. 使用git连接到Github

    直奔主题,使用git连接到Github步骤如下: 1. 安装git yum install git 或者 sudo get-apt install git git-core 2. 全局配置 git c ...

  8. BZOJ 3410 [Usaco2009 Dec]Selfish Grazing 自私的食草者:贪心【最多线段覆盖】

    题目链接:http://begin.lydsy.com/JudgeOnline/problem.php?id=1324 题意: 给你n个区间,问你最多能选择多少个区间使得它们不相互覆盖. 题解: RQ ...

  9. linux 加密解密文件小程序

    代码见下面,编译之后就可以用:建议放在bash下,或者添加环境变量. 使用方法:encrypt .两次输入密码.加密密码与解密密码不一致解码后就不是原文件了! #include <stdio.h ...

  10. hashlib加密

    一.hashlib的基本组成: 1.hashlib库是python3的标准库,主要用于数据的加密,以下是hashlib的方法及属性. >>> import hashlib>&g ...