首页 > 解决方案 > 根据雪花中的选择条件查询创建单独的表

问题描述

我正在使用带有条件的选择查询来删除重复项。如下查询

select * from (
select LOCATIONID, OBSERVATION_TIME_UTC, max(ROW_KEY) ROW_KEY from OLD_TABLE group by LOCATIONID, OBSERVATION_TIME_UTC
)

在这里它将仅显示 3 列和 LOCATIONID、OBSERVATION_TIME_UTC、ROW_KEY 的 15 列

我想创建一个单独的表,其中包含所有列,并且列的顺序不应更改。

我试过下面的查询

create or replace table NEW_TABLE as
select * from (
select LOCATIONID, OBSERVATION_TIME_UTC, max(ROW_KEY) ROW_KEY from OLD_TABLE group by LOCATIONID, OBSERVATION_TIME_UTC
)

但是上面的查询只给出了 3 列,而我需要新表中的数据(它应该包含所有列)。请有人更正我的查询!

标签: snowflake-cloud-data-platform

解决方案


Qualify could be used to grab the highest row(row_key) per location and observation_time:

 -- create or replace new_table as
Select *
From old_table
Qualify row_number() over(partition by location_id, observation_time_utc 
                          order by row_key desc) = 1

推荐阅读