【发布时间】:2017-12-12 13:33:28
【问题描述】:
我需要过滤其他列底部的重复项。这是我正在尝试的代码。不幸的是,它不起作用,因为查询永远不会完成。
Select r1, r2, r3...,rb1,..., rc1,...
From (
Select *, ROW_NUMBER() OVER (PARTITION BY r1 order by r6 DESC) AS rownbr
From
table1
join table2 ON r2=rb1
Join table3 ON r6=rc1
Join table4 ON rx=rdx
) source
Where
rownbr=1
有什么想法吗?
【问题讨论】:
-
请扩展“不起作用”,也许有人会有一些想法
-
查询永远不会结束。谢谢,尼克!
-
你能分享一些样本数据和你想要得到的结果吗?这将使我们更容易为您提供帮助。
-
我的猜测是您的联接不正确,因此您得到的记录太多以及“重复”。您绝对确定您的连接是正确的吗?您还应该为所有列名设置别名。 r1 和 r6 来自哪个表?你为什么不预先总结这个表,这样你就不会首先“加入”?
-
当我运行没有“row_number() over() partition()”的代码时效果很好。当我使用 row_number() 时出现问题。使用 distinct 子句,我可以避免大多数重复项,但由于某种原因,每列中都有一些重复项不相等。这些是我需要避免的。
标签: sql-server duplicates row-number