子查询更新成功但未更新

时间:2019-09-11 15:16:23

标签: sql-update snowflake-data-warehouse

我们在表中加载了错误的重复ID,我们需要对其进行更正。 更新ID的规则是,当时间差超过30分钟时,ID应该是新的/唯一的。 我已经编写了查询来过滤掉该查询,但是没有更新

下面的查询在那里找到要更新的ID。 为了测试,我使用了特定的ID。

select id,
       BEFORE_TIME,
       TIMESTAMP,
       datediff(minute,BEFORE_TIME,TIMESTAMP) time_diff,
       row_number() over (PARTITION BY id ORDER BY TIMESTAMP) rowno,
       concat(id,to_varchar(rowno)) newid from
            (SELECT id, 
                    TIMESTAMP,
                    LAG(TIMESTAMP_EST) OVER (PARTITION BY visit_id ORDER BY TIMESTAMP) as BEFORE_TIME
                FROM table_name t
                where id = 'XX1X2375'
                order by TIMESTAMP_EST)
         where BEFORE_TIME is not NULL and time_diff > 30
       order by time_diff desc
       ;

我可以看到具有相同id和时间差超过30的12条记录。 但是,当我尝试更新时。查询成功,但没有任何更新。

update table_name t
set t.id = c.newid
from 
(select id ,
       BEFORE_TIME,
       TIMESTAMP,
       datediff(minute,BEFORE_TIME,TIMESTAMP) time_diff,
       row_number() over (PARTITION BY id ORDER BY TIMESTAMP) rowno,
       concat(id,to_varchar(rowno)) newid from
            (SELECT id, 
                    TIMESTAMP,
                    LAG(TIMESTAMP) OVER (PARTITION BY visit_id ORDER BY TIMESTAMP) as BEFORE_TIME
                FROM table_name t
                where id = 'XX1X2375'
                order by TIMESTAMP_EST)
         where BEFORE_TIME is not NULL and time_diff > 30
       order by time_diff desc) c
where t.id = c.id
  and t.timestamp = c.BEFORE_TIME       
       ;

0 个答案:

没有答案
相关问题