sql—在配置单元中从横向视图转换为case语句

pn9klfpd  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(414)

我需要在case语句中放置以下代码:

select
count (*)
from db.tab1
lateral view explode(secondary.tertiary) exp as lv
where id IN ('6','1') and array_contains (lv.ci, "1");

我试过:

select 
  sum(
    case 
      when id IN ('6','1') 
          and array_contains ((lateral view explode(secondary.tertiary)).ci, "1") 
      then 1 
      else 0 
   end) 
from db.tab1;

但是有个错误。

jexiocij

jexiocij1#

select
  count(*),
  sum(if(..., 1, 0))
from db.tab1
  lateral view explode(secondary.tertiary) exp as lv
;

对于表上提供的sql tab1 ,实际逻辑如下:
爆炸场 secondary.tertiary ,别名为 lv ,从而生成临时结果集(表) tab2 ;
连接的类似连接的操作 tab2 的字段返回到中的行 tab1 ,生成另一个中间表 tab3 ;
从中选择 tab3 ,在此基础上 where 应用条件。

相关问题