删除部分重复的sql server

时间:2014-10-21 16:44:03

标签: sql sql-server

我正在改变SQL Server中的现有视图。我的工会声明创造了以下内容:

     Col1 | C2 | C3   | C4
     -----|----|------|-----
1      A  | B  | NULL | NULL
2      A  | B  |  C   | NULL
3      A  | B  |  C   |  D
4      E  | F  | NULL | NULL
5      E  | F  |  G   | NULL

但是,我只想(在这种情况下)第3行和第5行(我需要省略一个和两个,因为它们包含重复信息 - 第一列,第二列和第三列包含与第三行相同的信息,但第三行是最完整的')。第5行与第4行相同。

这是外连接/交叉问题吗?你怎么用这种方式创建一个视图?

1 个答案:

答案 0 :(得分:0)

假设Col1不是NULL,那么我们可以使用ROW_NUMBER和所有4列总值的顺序

; with cte 
AS
(
select ROW_NUMBER() over ( partition by col1 order by (coalesce(Col1,'')+ 
         coalesce([C2],'') + 
         coalesce([C3],'') + 
         coalesce([C4],'') ) desc) as seq,
         *
FROM Table1
)
 select * from cte
 where seq =1