删除sql server中的部分重复项
我正在更改SQL Server中的现有视图。我的工会声明创建了以下内容:删除sql server中的部分重复项,sql,sql-server,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 但是,我只想要(在这个场景
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行(我需要修改第1行和第2行,因为它们包含重复的信息-第1、2和3列包含与第3行相同的信息,但第三行是最“完整的”)。第5行的原因与第4行相同
这是外部联接/相交问题吗?如何以这种方式创建视图?假设Col1不为NULL,那么我们可以在所有4列总值上使用带有order by的行数
; 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
明确你的要求!!你说过我需要省略第一行和第二行,但是没有第二行!!总共有5行,哪一行需要考虑为第六行??你可以查看对结果集的排序。等级和密集等级-足够公平!很抱歉。。。我的部件出现复制/粘贴错误。现在所有问题都解决了。你说这是一个视图--你能显示视图下面的查询吗,或者这是相关的吗?我们是否只需要将显示的数据视为一个表并针对它编写一个查询?下一步:所有列都允许空值,还是只允许部分空值?我有一个针对它编写的存储过程。我只需要把桌子整理一下。我只希望查询使用最“完整”的数据版本(其他行变得无关紧要)。所有列都允许空值。事实上,我正在使用的发出查询的控件在遇到null时将退出,这就是为什么我需要使用最精简的行。