繁体   English   中英

如何使用 CTE (WITH CTE- common_table_expression) 更新雪花中的语句?

[英]How to update statement in snowflake using with CTE (WITH CTE- common_table_expression)?

我正在尝试更新最终表中的一个字段。 我这里有逻辑。 当它遇到某些情况时,我必须更新 last_version_flag。 如何在雪花中使用WITH CTE概念。 先感谢您。

update  dw.tb_fidctp_order
set     last_version_flag = 'N'
from    dw.tb_fidctp_order
where (with my_cte as (
select  order_id, MAX(cast(VERSION as NUMBER(18,0))) as max_version
from    stg.tb_fidctp_order_input 
group by order_id))
DW.tb_fidctp_order.order_id = my_cte.order_id and DW.tb_fidctp_order.version < my_cte.max_version

正确的语法是UPDATE target_table SET col_name = value FROM additional_tables WHERE condition

CREATE TABLE tb_fidctp_order(version INT, order_id INT, last_version_flag  TEXT);
CREATE TABLE tb_fidctp_order_input(version INT,order_id INT, last_version_flag TEXT);


update  tb_fidctp_order
set     last_version_flag = 'N'
from (
         WITH cte AS (
           select  order_id, MAX(cast(VERSION as NUMBER(18,0))) as max_version
           from    tb_fidctp_order_input 
          group by order_id
          )
          SELECT * FROM cte
     ) AS my_cte
where  tb_fidctp_order.order_id = my_cte.order_id 
  and tb_fidctp_order.version < my_cte.max_version;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM