sqlserver CTE删除重复数据

实现删除重复数据,并保留一条

  1. 使用 ROW_NUMBER() 窗口函数为每一行分配一个行号,按重复列的条件分组;
  2. 使用 CTE 来表示重复的行;
  3. 删除行号大于1的行。

 

WITH CTE AS (
SELECT
IOT_TerminalNo,SendDate,EVoltage,ECurrent,CreateTime,
ROW_NUMBER() OVER ( PARTITION BY IOT_TerminalNo, SendDate ORDER BY (SELECT 0) ) AS rn
FROM
Equipment_1001
where
--IOT_TerminalNo='Weldjoin-000001' AND
SendDate >='2025-04-01 00:00:00.000'
AND SendDate<'2025-07-07 13:26:32.830'
)
DELETE FROM CTE WHERE rn > 1;

 

  • PARTITION BY:按条件分组;
  • rn > 1:删除所有重复的行,只保留每组中的第一行;
posted @ 2025-07-08 08:41  爱吃糖的宝宝  阅读(15)  评论(0)    收藏  举报