暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 从表中给定的源和目的地值中查找所有可能的路由

askTom 2017-05-25
234

问题描述

我有一个包含列 (源,目标) 的表。假设它有如下给出的值:
从t中选择 *;

源目标
---------- -----------------------
孟买浦那1号
2孟买浦那
3纳西克果阿
4果阿纳西克

它应仅将路由打印为两个 (1或2、3或4) 条目中的一个,因为这两个条目都涵盖相同的路由。
我无法弄清楚如何区分第一记录和第二记录,以便只能选择其中之一。
我需要PLSQL查询中的解决方案。
我正在使用Oracle12c。

所需输出:

路线
--------
浦那-孟买
纳西克-果阿

专家解答

将两列传递到最小和最大。然后返回这些不同的:

CREATE TABLE t (
  id int, src varchar2(6), dst varchar2(6)
);
    
INSERT INTO t VALUES (1, 'Pune', 'Mumbai');
INSERT INTO t VALUES (2, 'Mumbai', 'Pune');
INSERT INTO t VALUES (3, 'Nashik', 'Goa');
INSERT INTO t VALUES (4, 'Goa', 'Nashik');
commit;

select * from t;

ID  SRC     DST     
1   Pune    Mumbai  
2   Mumbai  Pune    
3   Nashik  Goa     
4   Goa     Nashik

select distinct least(src, dst) || '-' || greatest(src, dst) from t;

LEAST(SRC,DST)||'-'||GREATEST(SRC,DST)  
Mumbai-Pune                             
Goa-Nashik  
复制

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论