【问题标题】:Getting unsupported subquery type when trying to insert into a table尝试插入表时获取不受支持的子查询类型
【发布时间】:2023-01-11 08:15:37
【问题描述】:

我有一个查询如下:

INSERT ALL
    WHEN NEWEST_ID IS NOT NULL AND 
         (SELECT COUNT(1) FROM (
                              SELECT * 
                              FROM MY_TABLE 
                              WHERE ID = NEWEST_ID 
                              QUALIFY ROW_NUMBER() OVER (PARTITION BY ID ORDER BY OFFSET DESC) = 1
                                ) 
          WHERE ACTIVE) = 0 THEN 
      INTO MY_TABLE VALUES(
        NEWEST_ID,
        CURRENT_DATE,
        NAME,
        FALSE
   )
SELECT * FROM TEST_TABLE;

但是,当我尝试从子查询中写入 select count(1) 或 count(*) 时,出现不受支持的子查询类型错误。为什么会这样?/我怎样才能改变这个?在我的子查询中,我只是试图在按降序偏移量排序后获取一组 ID 中的第一行。然后我试图确定该结果行中的 ACTIVE 列是否为 TRUE。

【问题讨论】:

    标签: insert subquery snowflake-cloud-data-platform partitioning


    【解决方案1】:

    如果您要检查至少 1 个,则更改

    AND
    (SELECT COUNT(1) FROM ( SELECT ... ) = 1
    

    AND
    EXISTS ( SELECT ... )
    

    否则改为

    AND
    ( SELECT COUNT(*)
                FROM MY_TABLE 
                WHERE ID = NEWEST_ID 
                QUALIFY ROW_NUMBER() OVER (PARTITION BY ID ORDER BY OFFSET DESC) = 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-07
      • 1970-01-01
      相关资源
      最近更新 更多