开发者社区> 问答> 正文

MaxCompute的With AS语法(CTE)的示例是什么?

MaxCompute的With AS语法(CTE)的示例是什么?

展开
收起
游客yzrzs5mf6j7yy 2021-12-08 18:15:15 794 0
1 条回答
写回答
取消 提交回答
  • -- 这样写看起来复杂
    INSERT OVERWRITE TABLE srcp PARTITION (p='abc')
    SELECT * FROM (
        SELECT a.key, b.value
        FROM (
            SELECT * FROM src WHERE key IS NOT NULL    ) a
        JOIN (
            SELECT * FROM src2 WHERE value > 0    ) b
        ON a.key = b.key
    ) c
    UNION ALL
    SELECT * FROM (
        SELECT a.key, b.value
        FROM (
            SELECT * FROM src WHERE key IS NOT NULL    ) a
        LEFT OUTER JOIN (
            SELECT * FROM src3 WHERE value > 0    ) b
        ON a.key = b.key AND b.key IS NOT NULL
    )d;
    
    -- 可以改成with as的形式比较直观。也不用反复嵌套
    with 
      a as (select * from src where key is not null),
      b as (select  * from src2 where value>0),
      c as (select * from src3 where value>0),
      d as (select a.key,b.value from a join b on a.key=b.key),
      e as (select a.key,c.value from a left outer join c on a.key=c.key and c.key is not null)
    insert overwrite table srcp partition (p='abc')
    select * from d union all select * from e;
    
    
    2021-12-08 18:15:26
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Data+AI时代大数据平台应该如何建设 立即下载
大数据AI一体化的解读 立即下载
极氪大数据 Serverless 应用实践 立即下载