在配置单元中的一系列值之间选择值

时间:2019-05-13 16:51:08

标签: hive conditional where-clause

在费率表中选择费率,值在两种货币之间 enter image description here 我在条件中使用子查询,但Hive不支持它们

选择r1.currency_code,r1.rate

从速率r1

其中r1.rate> =(从r2中选择r2.rate,其中r2.currency_code ='GBP')

和r1.rate <=(从r3中选择r3.rate,其中r3.currency_code ='ILS')

应选择GBP和ILS之间的汇率,但配置单元不支持该查询

1 个答案:

答案 0 :(得分:0)

在过滤之前,使用条件聚合将gbp和il比率划分为列。

select base_currency,currency_code,rate
from (select r.*
            ,max(case when currency_code='GBP' then rate end) over(partition by base_currency) as gbp_rate
            ,max(case when currency_code='ILS' then rate end) over(partition by base_currency) as ils_rate
      from rate r
      where base_currency = 'USD'
     ) r
where rate >= gbp_rate and rate <= ils_rate