如何删除重复的连续行 SQL
how to delete repeated successive rows SQL
我的历史记录 table 有很多行 T1,我需要 3 行的信息,所以我有新的 table T2,我想将此信息从 T1 复制到 T2。
但是我有重复的数据,那么如何复制呢?
我需要一些重复的行,有些不需要。只有在 D 列上我有与行相同的数据之前,我不需要该行的信息
例子:
我有 table 看起来像这样 -
T1:
Id B D
1 8 10
2 8 3
3 8 3
4 8 10
我只需要这一行 -
T2:
Id B D
1 8 10
2 8 3
4 8 10
只与上一行数据进行比较,如果匹配则不包含在where条件中
;WITH data AS
(
SELECT *, ROW_NUMBER() OVER (ORDER BY Id) AS Sequence FROM [Table]
)
SELECT Id, B, D
FROM data d
WHERE
NOT EXISTS
(
SELECT *
FROM data
WHERE Sequence + 1 = d.Sequence
AND B = d.B
AND D = d.D
)
insert into t2
select Id ,B ,D
(select * from t2
except
select d* from t1) t3
我的历史记录 table 有很多行 T1,我需要 3 行的信息,所以我有新的 table T2,我想将此信息从 T1 复制到 T2。 但是我有重复的数据,那么如何复制呢? 我需要一些重复的行,有些不需要。只有在 D 列上我有与行相同的数据之前,我不需要该行的信息 例子: 我有 table 看起来像这样 - T1:
Id B D
1 8 10
2 8 3
3 8 3
4 8 10
我只需要这一行 - T2:
Id B D
1 8 10
2 8 3
4 8 10
只与上一行数据进行比较,如果匹配则不包含在where条件中
;WITH data AS
(
SELECT *, ROW_NUMBER() OVER (ORDER BY Id) AS Sequence FROM [Table]
)
SELECT Id, B, D
FROM data d
WHERE
NOT EXISTS
(
SELECT *
FROM data
WHERE Sequence + 1 = d.Sequence
AND B = d.B
AND D = d.D
)
insert into t2
select Id ,B ,D
(select * from t2
except
select d* from t1) t3