问题描述
我有名为 “DUPLICTAE” 的表格,其中包含以下记录。我需要以下期望的输出...
COL1 | COL2 :----- | -----: banglore | chennai kolkata | pune chennai | mysore pune | banglore mysore | kolkata mumbai | delhi ================================= EXPECTED OUTPUT:- BANGALORE | CHENNAI KOLKATTA | PUNE MUMBAI | DELHI复制
专家解答
所以你想只显示行,所以每个值在整个结果集中最多出现一次?因此,如果 “banglore” 在col1中,则不能在col1或col2中显示任何其他行?
如果是这样,这里有一种方法可以做到这一点:
-在表上选择一行开始
-递归地处理表中的其余行
-在将行添加到结果时,构建c1和c2的所有值的字符串
-检查当前行的值是否在此字符串中。如果他们不是
-将它们添加到 “使用的值” 字符串的末尾
-设置一个标志,指出当前行不在此列表中
-仅返回设置了 “不在列表中” 标志的那些行
把这个放在一起给出了这样的东西:
如果是这样,这里有一种方法可以做到这一点:
-在表上选择一行开始
-递归地处理表中的其余行
-在将行添加到结果时,构建c1和c2的所有值的字符串
-检查当前行的值是否在此字符串中。如果他们不是
-将它们添加到 “使用的值” 字符串的末尾
-设置一个标志,指出当前行不在此列表中
-仅返回设置了 “不在列表中” 标志的那些行
把这个放在一起给出了这样的东西:
create table t ( c1 varchar2(10), c2 varchar2(10) ); insert into t values ('banglore','chennai'); insert into t values ('kolkata','pune'); insert into t values ('mysore', 'chennai'); insert into t values ('pune','banglore'); insert into t values ('mysore','kolkata'); insert into t values ('mumbai','delhi'); insert into t values ('delhi', 'pune'); with ranks as ( select t.*, c1 || ':' || c2 str, row_number() over (order by c1, c2) rn from t ), dedup (c1, c2, str, rn, strs, lev, ins) as ( select c1, c2, str, rn, str, 1 lev, 'N' ins from ranks where rn = 1 union all select r.c1, r.c2, r.str, r.rn, case when instr(d.strs, r.c1) = 0 and instr(d.strs, r.c2) = 0 then d.strs || ':' || r.str else d.strs end strs, d.lev + 1 d, case when instr(d.strs, r.c1) = 0 and instr(d.strs, r.c2) = 0 then 'N' else 'Y' end ins from dedup d join ranks r on d.lev + 1 = r.rn ) select * from dedup where ins = 'N'; C1 C2 STR RN STRS LEV INS banglore chennai banglore:chennai 1 banglore:chennai 1 N delhi pune delhi:pune 2 banglore:chennai:delhi:pune 2 N mysore kolkata mysore:kolkata 6 banglore:chennai:delhi:pune:mysore:kolkata 6 N复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle DataGuard高可用性解决方案详解
孙莹
556次阅读
2025-03-26 23:27:33
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
516次阅读
2025-04-15 17:24:06
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
420次阅读
2025-04-08 09:12:48
墨天轮个人数说知识点合集
JiekeXu
420次阅读
2025-04-01 15:56:03
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
419次阅读
2025-04-18 14:18:38
Oracle SQL 执行计划分析与优化指南
Digital Observer
416次阅读
2025-04-01 11:08:44
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
380次阅读
2025-04-20 10:07:02
Oracle 19c RAC更换IP实战,运维必看!
szrsu
360次阅读
2025-04-08 23:57:08
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
335次阅读
2025-04-17 17:02:24
oracle定时任务常用攻略
virvle
325次阅读
2025-03-25 16:05:19