oracle sql 转换成 hive sql -子查询转关联查询(二).子查询显示中max函数类型修改,from中关联子查询

其他sql格式也在更新中,可直接查看俺的这个系列,要是没有你需要的格式,可在评论或私信我,俺现在一天一看

函数子查询有关联条件的语句

讲解:因为子查询中 insertstatus 是共同的条件,需要分组(group by),改成关联子查询时需要重写一遍 insertstatus 在select里面,where中的条件是子查询中独有的字段,为什么要分组,因为不分组在下面on中取不到 insertstatus 的值,on中写的是关联的条件,where条件中是取不到子查询外面的a的。(直接复制就行,把自己的字段放进去就行,还不会评论或者私聊)

oracle 原sql

select 
	(select max(transactionno)
		from B
	   where busstype = '71'
		 and insertstatus = a.insertstatus ) as TransactionNo			 
from 
	A a

hive 改sql

select 
	prolc.maxtar as TransactionNo
from 
	A a
	LEFT JOIN
	(select max(transactionno) as maxtar,insertstatus 
	from B 
	where busstype='71' 
	group by insertstatus
	) prolc
	on prolc.insertstatus = a.insertstatus

问:为什么不像上一篇直接关联,还要在from中写一个子查询
答:因为max()函数如何直接关联查询是报错的,报什么–不是单组分组函数–,大概的意思就是这个函数就显示一条数据,但是有其他字段了,其他函数有很多条,它就不会自己判断了

函数子查询没有关联条件的语句

因为子查询中没有和a表的关联条件,直接用逗号隔开就可以了

oracle 原sql

select 
	(select max(transactionno)
		from B
	   where busstype = '71'
		 and insertstatus = '0') as TransactionNo
from 
	A a

hive 改sql

select 
	prolc.maxtar as TransactionNo			 
from 
	A a
	,
	(select max(transactionno) as maxtar
	from B 
	where busstype='71' and insertstatus = '0'
	) prolc

新加的链接一位好友的私信sql案例:子查询中多表关联.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值