【问题标题】:Snowflake - Possible to create temporary table within a table/view Creation?Snowflake - 可以在表/视图创建中创建临时表吗?
【发布时间】:2023-02-21 23:20:53
【问题描述】:

我正在尝试在 Snowflake 中创建一个视图,并且在该视图的 dll 中我正在尝试创建一个临时表,因为我需要先过滤一下数据以使其按预期工作(我正在从 Oracle SQL 迁移)。

With DT1 as (select * from CPDD.DRRAW.EXTABLE1
            limit 100);

Create or replace view CPDD.DRRAW.TEST11 as 
(select * from DT1
limit 10)

我似乎无法将临时表用于实际工作,因为我不断收到“意外创建”错误。甚至可以在表/视图 DLL 中有一个临时表吗?

最终,我需要这样的东西的原因是因为在 Oracle SQL 中,我在 select 语句中有一个 NVL 部分,当迁移到 Snowflake 时,我收到“不支持的子查询”错误。

Select MAINTBL.ATT1, MAINTBL.ATTR2, 
NVL (
(SELECT cosa.av1
FROM CPDD.DRRAW.ATRVL1 cosa
WHERE     cosa.ATT_NM = 'MYDE'
AND cosa.OBJ_NM = OPN.ON),
(SELECT csoa.av1
FROM CPDD.DRRAW.ATRVL1 cosa
WHERE     cosa.ATT_NM = 'MYDE'
AND cosa.OBJ_NM = 'DEFLT'))
MYDE 
FROM CPDD.DRRAW.MAINTBL

【问题讨论】:

  • 您需要将 CTE 放在 CREATE 语句中

标签: sql oracle snowflake-cloud-data-platform


【解决方案1】:

在 Snowflake 中,CTE 部分需要跟在 create 声明之后

create or replace temporary table xxxx as

with cte as 

(select ..
 from ...) 


select * 
from cte;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-18
    • 2022-10-14
    • 2021-01-30
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多