如何删除重复的连续行SQL

时间:2015-05-21 05:10:38

标签: sql-server greatest-n-per-group gaps-and-islands

我有多行T1的历史表,我需要3行的信息,所以我有新表T2,我想从T1到T2复制这些信息。 但我有重复的数据,所以如何复制权? 我需要一些重复的行,有些不是。只有在列D我有相同的数据,如行之前我不需要来自此行的信息 例: 我的桌子看起来像这样 - 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

2 个答案:

答案 0 :(得分:1)

只需与之前的行数据进行比较,如果匹配则不包括where where condition

;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
    )

答案 1 :(得分:0)

insert into t2
select Id ,B ,D
(select * from t2
except
select d* from t1) t3