我有一个视图返回3列和3个散列。第三列有时为空。
这些组合以不同的顺序重复,例如:
1,2,3
1,3,2
2,1,3
2,3,1
3,1,2
3,2,1
我想是每3个连接的散列6行。
这些散列实际上是同一个文件的ID(但现在不相关)。
**
我试过各种方法,似乎找到了一个合适的解决办法,但我想知道是否有更好的方法。另外请注意,有时6行中的一行可能会丢失。
我目前正在尝试以下方法,似乎有效:
select one, two, three from DUPLICATE_DOCUMENTS_3JOINS
where (three is null and two<one) or (three<two AND two<one);
有什么想法吗?
3条答案
按热度按时间wljmcqd81#
如果只需要一行,那么想到的最简单的选项是行限制查询:
在oracle11g及更早版本中,您可以使用
row_number()
取而代之的是:dba5bblo2#
您可以使用独特的选择:
给定示例数据集中的六条记录,即1、2和3的六个排列,上面的查询将只返回一条记录1、2、3。上面的逻辑应该适用于一、二、三个值(以任何顺序)的任何集合。
u5i3ibmn3#
如果有三个联接,请修复联接中的问题:
如果你不得不处理
left join
s、 但想法是相似的。