left join的多重串联与groupby
有三张表或组合查询,f1,f2,f3,其中,f1分别与f2,f3是一对多关系,f1一条记录可能对应f2或f3中0条或多条记录
要创建一个查询,以f1为基准,即f1中有多少条记录,结果也就返回对应数量的记录,并整合f2,f3中的相应信息
此时需要创建两个left join 串接并加上group by如:
有三张表或组合查询,f1,f2,f3,其中,f1分别与f2,f3是一对多关系,f1一条记录可能对应f2或f3中0条或多条记录
要创建一个查询,以f1为基准,即f1中有多少条记录,结果也就返回对应数量的记录,并整合f2,f3中的相应信息
此时需要创建两个left join 串接并加上group by如:
select f1.x,f1.y,max(f2.b),wmsys.wm_concat(f3.c)
from
(.........
) f1
left join
(........
) f2
on f1.z=f2.k
left join
(........
) f3
on f1.z=f3.c
group by f1.x,f1.y
实例
select f1.pro_uuid,f1.程序类型,f1.程序名,f1.过渡名,f1.航线类型,f1.航线限定1,f1.航线限定2, f1.机型限制
,wmsys.wm_concat(nvl2(f2.page,f1.ad||'-'||f2.page,null)) 航图, wmsys.wm_concat(f2.nav_source) 导航源
,wmsys.wm_concat(distinct nvl2(f3.rrwd,'RW'||f3.rrwd,null)) 跑道
from
(
select d.procedure_uuid pro_uuid,a.designator ad,
decode(d.PRO_TYPE,'SID','离场','STAR','进场','IAP','进近',PRO_TYPE) 程序类型,
d.PRO_NAME 程序名,
d.TRANS_IDEN 过渡名,
d.route_type||' '||(select name from TERMPRO_RULE_ROUTE_TYPE where protype=d.pro_type and routetype=d.route_type) 航线类型,
d.qulifier_1||' '||(select QUALIFIERNAME from TERMPRO_RULE_ROUTE_QUALIFIER where QUALIFIER=d.qulifier_1 and ONE_OR_TWO=1) 航线限定1,
d.qulifier_2||' '||(select QUALIFIERNAME from TERMPRO_RULE_ROUTE_QUALIFIER where QUALIFIER=d.qulifier_2 and ONE_OR_TWO=2) 航线限定2,
decode(acft_cat,'P',null,(select name from RULE_ACFT_CAT where CODE_ACFT_CAT= d.acft_cat)) 机型限制
from TERMINAL_PROCEDURE_TS d,airport_heliport_ts a
where d.airport_heliport_uuid='4a4ea52d-69be-48e4-baa1-321ee6d023d7'
and d.airport_heliport_uuid=a.airport_heliport_uuid
and vernumber(a.eff_version_id)<=201799 and vernumber(a.out_version_id)>201799 and d.interpretation='BASELINE'
and vernumber(d.eff_version_id)<=201799 and vernumber(d.out_version_id)>201799 and d.interpretation='BASELINE'
) f1
left join
(
select pc.procedure_uuid pro_uuid, c.page_number page, tc.type_name nav_source
from terminal_chart_ts c, termpro_chart_ts pc, terminal_chart_type tc
where pc.chart_uuid=c.terminal_chart_uuid
and c.sub_chart_type_id=tc.chart_type_id
and vernumber(c.eff_version_id)<=201799 and vernumber(c.out_version_id)>201799 and c.interpretation='BASELINE'
and vernumber(pc.eff_version_id)<=201799 and vernumber(pc.out_version_id)>201799 and pc.interpretation='BASELINE'
) f2
on f1.pro_uuid=f2.pro_uuid
left join
(
select pw.procedure_uuid pro_uuid, rd.designator rrwd
from TERMPRO_RWYDRC_TS pw, runway_direction_ts rd
where pw.runway_direction_uuid=rd.runway_direction_uuid
and vernumber(pw.eff_version_id)<=201799 and vernumber(pw.out_version_id)>201799 and pw.interpretation='BASELINE'
and vernumber(rd.eff_version_id)<=201799 and vernumber(rd.out_version_id)>201799 and rd.interpretation='BASELINE'
) f3
on f1.pro_uuid=f3.pro_uuid
group by f1.pro_uuid,f1.程序类型,f1.程序名,f1.过渡名,f1.航线类型,f1.航线限定1,f1.航线限定2, f1.机型限制
order by decode(f1.程序类型,'离场',1,'进场',2,'进近',3),f1.程序名,f1.过渡名
left join的多重串联与groupby的更多相关文章
- Hive学习笔记——保存select结果,Join,多重插入
1. 保存select查询结果的几种方式: 1.将查询结果保存到一张新的hive表中 create table t_tmp as select * from t_p; 2.将查询结果保存到一张已经存在 ...
- String.Join() 方法 的用法
连接指定数组的元素或集合的成员,在每个元素或成员之间使用指定的分隔符.重载此成员.有关此成员的完整信息(包括语法.用法和示例),请单击重载列表中的相应名称 Join(String, IEnumerab ...
- Entity Framework 基于方法的查询语法
实体框架(Entity Framework )是 ADO.NET 中的一套支持开发面向数据的软件应用程序的技术. LINQ to Entities 提供语言集成查询 (LINQ) 支持,它允许开发 ...
- LINQ to Entities 查询语法
转自: http://www.cnblogs.com/asingna/archive/2013/01/28/2879595.html 实体框架(Entity Framework )是 ADO.NET ...
- Python_进程、线程及协程
一.Python进程 IO密集型----多线程 计算密集型----多进程 1.单进程 from multiprocessing import Process def foo(i): print('你好 ...
- 对Json字符串进行格式化显示
很多时候,我们拿Json字符串作为返回结果,但是当数据量多的时候,一堆的Json字符串看起来很不直观,这时候我们可以使用以下办法将Json字符串格式化一下再输出 var JsonUti = { //定 ...
- Ruby on Rails Tutorial 第四章 Rails背后的Ruby 之 其他数据类型(二)
1.方法 定义如下所示: def string_message(str='') if str.empty? "It's an empty string!" else "T ...
- C#几个经常犯错误汇总
在我们平常编程中,时间久了有时候会形成一种习惯性的思维方式,形成固有的编程风格,但是有些地方是需要斟酌的,即使是一个很小的错误也可能会导致昂贵的代价,要学会善于总结,从错误中汲取教训,尽量不再犯同样错 ...
- C#中几个经常犯的错误总汇
在我们平常编程中,时间久了有时候会形成一种习惯性的思维方式,形成固有的编程风格,但是有些地方是需要斟酌的,即使是一个很小的错误也可能会导致昂贵的代价,要学会善于总结,从错误中汲取教训,尽量不再犯同样错 ...
随机推荐
- Win7 SP1 下安装 VS2015 Update 3
首先Win7必须是SP1,然后要求安装IE11,安装IE11前需要安装6个先决补丁,成功安装IE11后建议安装3个可选补丁.然后导入3个根证书(COMODO RSA Certification Aut ...
- stringToDateUtils 字符串转化日期
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...
- C++纯虚函数和抽象类的一些要点
1. 纯虚函数是在其被声明的类中不被实现的函数. 2. 定义了纯虚函数的类是抽象类,可以用来生命变量,但不能用来构造实例. 3. 基类中定义了纯虚函数,派生类要么定义这个纯虚函数,要么重复声明一次这个 ...
- CCF 201703-3 Markdown
问题描述 试题编号: 201703-3 试题名称: Markdown 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 Markdown 是一种很流行的轻量级标记语言(lig ...
- MYSQL变量和状态
mysql设置变量是在my.cnf文件里,修改配置文件后需要重启mysql的服务,才能生效.但是在线上服务器是不允许随便重启的,我们可以用命令直接修改变量值,使其生效.然后再修改配置文件中的值,以防止 ...
- 【LeetCode】Find Minimum in Rotated Sorted Array 找到旋转后有序数组中的最小值
本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/p/4032570.html 原题: Suppose a sorted array is ...
- YCSB benchmark测试mongodb性能——和web服务器测试性能结果类似
转自:http://blog.sina.com.cn/s/blog_48c95a190102v9kg.html YCSB(Yahoo! Cloud Serving Benchmark) ...
- 【spark】示例:二次排序
我们有这样一个文件 首先我们的思路是把输入文件数据转化成键值对的形式进行比较不就好了嘛! 但是你要明白这一点,我们平时所使用的键值对是不具有比较意义的,也就说他们没法拿来直接比较. ...
- 版本工具管理之----git
如何查看隐藏文件夹: 如果你看不到.git目录,你需要让隐藏的文件可见.具体做法就是打开一个Terminal窗口,输入以下命令: defaults write com.apple.finder App ...
- Windows GVLK密钥对照表(KMS激活专用
以下key来源于微软官网:https://technet.microsoft.com/en-us/library/jj612867.aspx Windows Server 2016 操作系统 KMS激 ...