在同张表内用一个字段等于另一个字段为条件查询第三个字段的值

花生射手 2017-09-26 11:08:54
因为客户信息存储时有一个上级客户编码,现在要以编码在同一张表内找出上级客户的名称。
如:
客户编码 客户名称 上级客户编码
001 天津公司
002 北京公司
00101 天津滨海区公司 001
00201 北京故宫公司 002
现在需要以第三列等于第一列为条件,查出客户对应上级客户的名称,希望各位能予以指导,谢谢。
...全文
1944 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
自由的靈魂 2017-12-05
  • 打赏
  • 举报
回复
用start with ...connect by 应该可以实现吧??这个用法不怎么熟也难理解 好好研究下
碧水幽幽泉 2017-09-26
  • 打赏
  • 举报
回复
我上面的sql可以实现
碧水幽幽泉 2017-09-26
  • 打赏
  • 举报
回复

with tmp as
(
select '001' c1, '天津公司' c2, null c3 from dual union all
select '002' c1, '北京公司' c2, null c3 from dual union all
select '00101' c1, '天津滨海区公司' c2, '001' c3 from dual union all
select '00201' c1, '北京故宫公司' c2, '002' c3 from dual
)
select t1.c1 "客户编码",t1.c2 "客户名称 ",t2.c2 "上级客户名称"
from tmp t1
left join tmp t2 on t1.c3= t2.c1
碧水幽幽泉 2017-09-26
  • 打赏
  • 举报
回复
引用 3 楼 qq_39864588 的回复:
[quote=引用 2 楼 qq646748739 的回复:]
我上面的sql可以实现

谢谢,这个前面可以省略直接用最后的查询语句吗?[/quote]
select t1.c1 "客户编码",t1.c2 "客户名称 ",t2.c2 "上级客户名称"
from tmp t1
left join tmp t2 on t1.c3= t2.c1
其中的表名和字段名改成你实际的表名和字段即可。
「已注销」 2017-09-26
  • 打赏
  • 举报
回复
用递归调用就可以啦,有些是要查询很多个上级的
碧水幽幽泉 2017-09-26
  • 打赏
  • 举报
回复
放心,是完全可以的~
花生射手 2017-09-26
  • 打赏
  • 举报
回复
引用 2 楼 qq646748739 的回复:
我上面的sql可以实现
谢谢,这个前面可以省略直接用最后的查询语句吗?

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧