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

如何从原数据得到结果数据? 谢谢
展开
 我来答
woyaoaiaia
2012-07-24 · TA获得超过764个赞
知道小有建树答主
回答量:479
采纳率:0%
帮助的人:164万
展开全部
假设表名为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
)
);
micro0369
2012-07-23 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:4090万
展开全部
1. 没有看出来数据的转换规则
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 = '未接') -- 最后这个未接不知道是否需要
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1063546
2012-07-23 · 超过12用户采纳过TA的回答
知道答主
回答量:89
采纳率:0%
帮助的人:45.7万
展开全部
说真的没有搞懂你要干嘛,递归我是会点的,但是你的我没有看懂干嘛,没法写啊……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liul21cn
2012-07-23
知道答主
回答量:41
采纳率:0%
帮助的人:8万
展开全部
你目标是啥啊?都没有说清楚
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式