公用表表達式(CTE)是從WITH子句中指定的簡單查詢派生的臨時結果集(會把查詢的表數據放到內存中,供其他查詢隨時使用),
該子句緊跟在SELECT或INSERT關鍵字之前。
CTE僅在單個語句的執行范圍內定義。
可以在Hive SELECT,INSERT,CREATE TABLE AS SELECT 或 CREATE VIEW AS SELECT 語句中使用一個或多個CTE 。
一個 with as 語句
--1 with cte_order as ( select store_id,channel,paid_date,order_id,gmv from testdb.order_line where channel in ('SNG','JDDJ') ) --with as 語句不能加分號 ; select store_id,order_id,paid_date,order_id,gmv from cte_order where channel='SNG' union all select store_id,order_id,paid_date,order_id,gmv from cte_order where channel='JDDJ' ;
多個 with as 語句
--2 with cte_SNG as ( select store_id,channel,paid_date,order_id,gmv from testdb.order_line where channel = 'SNG' ) --多個 with as 語句 用逗號, 隔開 , cte_JDDJ as ( select store_id,channel,paid_date,order_id,gmv from testdb.order_line where channel = 'JDDJ' ) select store_id,order_id,paid_date,order_id,gmv from cte_SNG union all select store_id,order_id,paid_date,order_id,gmv from cte_JDDJ ;
內嵌 union
--3 with cte_order as ( select store_id,channel,paid_date,order_id,gmv from testdb.order_line where channel = 'SNG' union all select store_id,channel,paid_date,order_id,gmv from testdb.order_line where channel = 'JDDJ' ) select * from cte_order ;