Sql Oracle—确定行是否是联接返回多行的结果
在Oracle中,他们有没有办法确定一行是否只是因为一个连接导致多行返回而显示的 我会解释: 在这个例子中,我有两张表,比如SO和PO 驱动表也是如此,并连接到PO。每个销售订单可以返回超过1条记录。这是需要的,但是我希望能够有一个列,指示结果集的SO记录是否重复,如中所示,只是因为PO联接导致其重复 我想在Crystal Reports中使用此标识符来抑制报告上的前半部分字段,因为这是不需要多次显示的重复数据 我还应该补充一点,我正在对这些数据进行分组,我刚刚意识到这意味着我不能做大量的工作,除非我将它们添加到group by中,而我不能这样做。行数按SO超额分配。按PO加入id订单 并对r>1的行抑制SO.*输出 更新:您不必按连接条件进行分区。按要抑制的对象进行分区Sql Oracle—确定行是否是联接返回多行的结果,sql,oracle,Sql,Oracle,在Oracle中,他们有没有办法确定一行是否只是因为一个连接导致多行返回而显示的 我会解释: 在这个例子中,我有两张表,比如SO和PO 驱动表也是如此,并连接到PO。每个销售订单可以返回超过1条记录。这是需要的,但是我希望能够有一个列,指示结果集的SO记录是否重复,如中所示,只是因为PO联接导致其重复 我想在Crystal Reports中使用此标识符来抑制报告上的前半部分字段,因为这是不需要多次显示的重复数据 我还应该补充一点,我正在对这些数据进行分组,我刚刚意识到这意味着我不能做大量的工作,
13:35:44 SYSTEM@dwal> ed
Wrote file S:\\tools\buffer.sql
1 select decode(rn, 1, owner) owner, object_type, cnt
2 from (
3 select owner, object_type, count(*) cnt,
4 row_number() over(partition by owner order by owner, object_type desc) rn
5 from dba_objects
6 where owner in( 'SYSTEM', 'OUTLN')
7 group by owner, object_type
8* )
13:36:09 SYSTEM@dwal> / </s>
OWNER OBJECT_TYPE CNT
-------- ------------------- ----------
OUTLN TABLE 3
PROCEDURE 1
LOB 1
INDEX 5
SYSTEM VIEW 14
TYPE 1
TRIGGER 2
TABLE PARTITION 47
TABLE 159
SYNONYM 8
SEQUENCE 20
QUEUE 4
PROCEDURE 1
PACKAGE BODY 1
PACKAGE 1
LOB 23
INDEX PARTITION 72
OWNER OBJECT_TYPE CNT
-------- ------------------- ----------
INDEX 239
18 rows selected.
在这种情况下,您将需要对多个列进行多个分析,这是非常昂贵的如果没有具体说明,我将使用基于聚合IE:COUNT结果的分析返回1或零。这意味着一组从句对你有用吗+我想问一个有趣的问题。这看起来确实奏效了。我在本例中放置了COUNTDISTINCT PO.LINK PO.LINK是返回多行的连接的键。所有这些,当COUNTDISTINCT PO.LINK>1时,则“Y”或“N”结束。这就是你想的方向吗?你将无法区分countpo.link需要显示什么和不需要显示什么。顺便说一句,我想countdistinct po.link应该总是返回1,如果这是一个等分连接,不是吗您将只能看到在左外部联接中实际生成了多少行,因此它可能返回nil。我认为这不起作用,因为so上的联接条件不包括在我的组中,只是更新了我的问题。