ORACLE类似于递归的查询问题
原数据C1C2C3C4a未接12a100323b未接45c未接67b100158a未接2131查询后的结果数据C1C2C3C4a100323c未接67a未接2131b10...
原数据
C1 C2 C3 C4
a 未接 1 2
a 1003 2 3
b 未接 4 5
c 未接 6 7
b 1001 5 8
a 未接 21 31
查询后的结果数据
C1 C2 C3 C4
a 1003 2 3
c 未接 6 7
a 未接 21 31
b 1001 5 8
如何从原数据得到结果数据? 谢谢 展开
C1 C2 C3 C4
a 未接 1 2
a 1003 2 3
b 未接 4 5
c 未接 6 7
b 1001 5 8
a 未接 21 31
查询后的结果数据
C1 C2 C3 C4
a 1003 2 3
c 未接 6 7
a 未接 21 31
b 1001 5 8
如何从原数据得到结果数据? 谢谢 展开
展开全部
假设表名为CC:
create view v_cc as select rownum as rn,t1.* from cc t1;
select *
from v_cc
where (rn,c1,c2,c3,c4) not in(
select t2.*
from v_cc t2
where exists (select 1
from v_cc t1
where exists(
select 1
from v_cc
where c4=t1.c3
and c1=t1.c1
and rn<>t1.rn
)
and t1.c2<>'未接'
and t2.c4=c3
)
);
create view v_cc as select rownum as rn,t1.* from cc t1;
select *
from v_cc
where (rn,c1,c2,c3,c4) not in(
select t2.*
from v_cc t2
where exists (select 1
from v_cc t1
where exists(
select 1
from v_cc
where c4=t1.c3
and c1=t1.c1
and rn<>t1.rn
)
and t1.c2<>'未接'
and t2.c4=c3
)
);
展开全部
1. 没有看出来数据的转换规则
2. 没有看出来和递归有和关系?
2. 没有看出来和递归有和关系?
更多追问追答
追问
在数据中存在这样的数据,当C1列相等的时候,C4等于C1列相等的C3,需要查找C2不等于“未接”的数据,如果数据中存在C1相等,但是没有C4列=C3列的则全部查出。
追答
这个不需要递归吧,试试,
select * from tabname t1 where exists(
select 1 from tabname t2 where t1.c1=t2.c1 and t1.c3=t2.c4 and t2.c2 = '未接') -- 最后这个未接不知道是否需要
and c2'未接'
union
select * from tabname t1 where not exists(
select 1 from tabname t2 where t1.c1=t2.c1 and t1.c3=t2.c4 and t2.c2 = '未接') -- 最后这个未接不知道是否需要
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
说真的没有搞懂你要干嘛,递归我是会点的,但是你的我没有看懂干嘛,没法写啊……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询