mik*_*wry 6 snowflake-cloud-data-platform
Snowflake 是否允许您创建一系列 CTE,然后最后将它们连接在一起以创建表格?
例如:
with CTE1 as ( SELECT * FROM TABLE1)
,CTE2 AS (SELECT * FROM TABLE2)
,CTE3 AS (SELECT * FROM TABLE3)
CREATE TABLE TABLE_NAME_HERE AS
SELECT * FROM CTE1 AS 1
LEFT JOIN CTE2 AS 2 ON 1.KEY = 2.KEY
LEFT JOIN CTE3 AS 3 ON 1.KEY = 3.KEY
Run Code Online (Sandbox Code Playgroud)
我收到unexpected 'CREATE'.错误
对的,这是可能的:
CREATE TABLE TABLE_NAME_HERE AS
WITH CTE1 as ( SELECT * FROM TABLE1)
,CTE2 AS (SELECT * FROM TABLE2)
,CTE3 AS (SELECT * FROM TABLE3)
SELECT * -- here should be explicit column list to avoid name duplication error
FROM CTE1 AS 1
LEFT JOIN CTE2 AS 2 ON 1.KEY = 2.KEY
LEFT JOIN CTE3 AS 3 ON 1.KEY = 3.KEY;
Run Code Online (Sandbox Code Playgroud)
这是一个有趣的形式,因为 CTAS (CREATE TABLE AS) 形式是
CREATE TABLE <name> AS <select>
Run Code Online (Sandbox Code Playgroud)
SELECT 形式可以有一个 CTE,CTE 形式是
WITH <name> AS <select>
Run Code Online (Sandbox Code Playgroud)
CTE 也可以在子选择中,因为“它只是一个选择”,因此
SELECT <columns>
FROM (
WITH cte_1 AS (
SELECT <columns>
FROM table
)
SELECT <columns>
FROM cte_1
)
Run Code Online (Sandbox Code Playgroud)
这说明了为什么 Lukasz 显示的形式是正确的,因为如果我们添加更多括号
CREATE TABLE name AS (
WITH cte_1 AS (
SELECT <columns>
FROM table
)
SELECT <columns>
FROM cte_1
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10501 次 |
| 最近记录: |